pandas 某一列分组,其他列合并成list

pandas列转换为字典,但将相同第一列(键)的所有值合并为一个键

 

形式一: 

import pandas as pd

# data
data = pd.DataFrame({'column1':['key1','key1','key2','key2'],
       'column2':['value1','value2','value3','value3']})
print(data)

# Grouped dict
data_dict = data.groupby('column1').column2.apply(list).to_dict() 

print(data_dict)

输出结果:
  column1 column2
0    key1  value1
1    key1  value2
2    key2  value3
3    key2  value3

{'key1': ['value1', 'value2'], 'key2': ['value3', 'value3']}

形式二:

import pandas as pd
# data
df = pd.DataFrame({'column1':['key1','key1','key2','key2'],
       'column2':['value1','value2','value1','value2'],
       'column3':['value11','value11','value22','value22'],
       'column4':['value44','value44','value55','value55']})

# Grouped dict
data_dict = df.groupby('column1').apply(lambda x: {col:x[col].tolist() for col in x.columns if col != 'column2'}).to_dict()
print(data_dict)

data_dict2 = df.groupby('column1').apply(lambda x: {col:x[col].tolist()[0] if col != 'column2' else x[col].tolist() for col in x.columns}).to_dict()
print(data_dict2)

输出结果:
#data_dict
{
    'key1': {
        'column1': ['key1', 'key1'], 
        'column3': ['value11', 'value11'], 
        'column4': ['value44', 'value44']
    }, 
    'key2': {
        'column1': ['key2', 'key2'], 
        'column3': ['value22', 'value22'], 
        'column4': ['value55', 'value55']
    }
}
#data_dict2
{
    'key1': {
        'column1': 'key1', 
        'column2': ['value1', 'value2'], 
        'column3': 'value11', 
        'column4': 'value44'
    }, 
    'key2': {
        'column1': 'key2', 
        'column2': ['value1', 'value2'], 
        'column3': 'value22', 
        'column4': 'value55'
    }
}

 

### 回答1: 在 Pandas 中,可以使用 `pd.concat` 函数来合并多个 Series。具体步骤如下: 1. 将多个 Series 放入一个表中,例如 `series_list = [s1, s2, s3]`。 2. 调用 `pd.concat` 函数,并将表作为参数传入,例如 `result = pd.concat(series_list)`。 3. 如果需要按照某一列进行合并,则可以在调用 `pd.concat` 函数时指定 `axis` 参数的值为 1,例如 `result = pd.concat(series_list, axis=1)`。 需要注意的是,进行合并的多个 Series 应当具有相同的索引,否则可能会出现一些问题。 ### 回答2: 在Pandas中,我们可以使用DataFrame来合并Series。 首先,我们需要创建一个DataFrame对象。DataFrame是一个二维数据结构,由行和。每可以是不同的数据类型,这在合并多个Series时非常有用。 我们可以使用pd.DataFrame()函数来创建一个空的DataFrame对象。然后,可以将多个Series对象传递给DataFrame的构造函数,以创建具有多个的DataFrame。 下面是一个示例: ```python import pandas as pd # 创建多个Series对象 s1 = pd.Series([1, 2, 3]) s2 = pd.Series([4, 5, 6]) s3 = pd.Series([7, 8, 9]) # 创建一个空的DataFrame对象 df = pd.DataFrame() # 将Series对象添加为DataFrame的 df['Column1'] = s1 df['Column2'] = s2 df['Column3'] = s3 # 打印DataFrame print(df) ``` 输出结果如下: ``` Column1 Column2 Column3 0 1 4 7 1 2 5 8 2 3 6 9 ``` 在这个示例中,我们创建了三个Series对象:s1,s2,s3。然后,我们创建了一个空的DataFrame对象df,并将这三个Series对象作为DataFrame的添加进去。最后,我们打印了DataFrame。 通过这种方式,我们可以合并多个的Series对象,并以DataFrame的形式进行操作和处理。 ### 回答3: pandas 是一种强大的数据处理工具,可以轻松地合并 Series。 在 pandas 中,可以使用 `pd.concat()` 函数来合并 Series。`pd.concat()` 函数可以将多个 Series 沿着指定的轴(默认为轴)进行合并。 以下是一个示例: ```python import pandas as pd # 创建多个 Series s1 = pd.Series([1, 2, 3]) s2 = pd.Series([4, 5, 6]) s3 = pd.Series([7, 8, 9]) # 合并多个 Series result = pd.concat([s1, s2, s3], axis=1) print(result) ``` 运行上述代码后,输出的结果将是一个 DataFrame,其中包含了合并后的多 Series,如下所示: ``` 0 1 2 0 1 4 7 1 2 5 8 2 3 6 9 ``` 注意,在上面的代码中,我们使用 `pd.concat()` 函数,并将多个 Series 作为参数传递给它。`axis=1` 参数表示按进行合并,如果要按行进行合并,可以将 `axis=0`。 此外,还可以使用 `pd.DataFrame()` 函数将合并的多个 Series 转换为 DataFrame。只需使用 `pd.DataFrame()` 函数并传递合并后的结果即可。 希望这个回答能够帮到你!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxp198837

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值