Pandas 聚合多个列

问题描述 投票:0回答:1

我需要将多列聚合为一列。我有以下代码可以工作,但现在列,我正在努力将其修改为几列。

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 年快乐!

python pandas aggregate
1个回答
0
投票

要以更实用的方式对许多列进行操作,请循环遍历所有非“组”的列,如果您有很多变量,这将为您提供实用性:

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
© www.soinside.com 2019 - 2024. All rights reserved.