Pandas聚合多个列[重复]

z9smfwbn  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(108)

此问题在此处已有答案

Concatenate strings from several rows using Pandas groupby(8个回答)
Apply multiple functions to multiple groupby columns(9个回答)
6天前关闭
我需要通过一列聚合多个列。我有下面的代码,但现在列,我很难修改它到几个列。

import pandas as pd

# Sample DataFrame
data = {
    'Group': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Value': [1, 2, 3, 4, 5, 6],
    'Qty': [100, 202, 403, 754, 855, 1256]
}
df = pd.DataFrame(data)
print (df)
result = df.groupby('Group')['Value'].apply(lambda x: pd.Series([', '.join(map(str, x))])).reset_index()
print(result)

字符串
这将生成一个包含“Group”列(groupby)和一个“Value”列的表,但我需要另一个包含变量Qty的聚合输出的列。实际上,我的数据集有12个变量需要聚合。有什么建议吗?
提前感谢你,2024年快乐!!

vql8enpb

vql8enpb1#

要对多列执行此操作,请以更实用的方式循环所有不属于“Group”的列,如果您有很多变量,这将给予实用性:

aggregated_data = df.groupby('Group').agg({col: concatenate_with_comma for col in df.columns if col != 'Group'})

字符串
至于concatenate_with_coma的用法,如下所示:

def concatenate_with_comma(series):
    return ', '.join(map(str, series))


供参考,你可以使用“sum”和其他函数,如果这是你最终的目标。结果是这样的:

Value             Qty
Group                         
A      1, 2, 5   100, 202, 855
B      3, 4, 6  403, 754, 1256

相关问题