gpt4 book ai didi

python - 汇总数据集并创建新变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:10 26 4
gpt4 key购买 nike

我有一个按国家、季度、部门、交易类型和值(value)列出单个交易的数据集。我想根据前三个变量对其进行总结,但为其他两个变量创建新列。数据集如下所示:

Country   Quarter   Division    Type    Value
A 1 Sales A 50
A 2 Sales A 150
A 3 Sales B 20
A 1 Sales A 250
A 2 Sales B 50
A 3 Sales B 50
A 2 Marketing A 50

现在我想聚合数据以按类型获取交易数量作为一个新变量。按前三个变量分组的交易总数很容易:

df.groupby(['Country', 'Quarter', 'Division'], as_index=False).agg({'Type':'count', 'Value':'sum'})

但是,我希望我的新数据框如下所示:

Country   Quarter   Division    Type_A   Type_B     Value_A   Value_B
A 1 Sales 2 0 300 0
A 2 Sales 1 1 150 50
A 3 Sales 0 2 0 70
A 2 Marketing 1 0 50 0

我该怎么做?

最佳答案

groupby 之后用元组在 agg 函数中为带有聚合函数的新列名指定列,然后按 DataFrame.unstack 整形最后通过 mapMultiIndex 转换为列:

df1 = (df.groupby(['Country', 'Quarter', 'Division', 'Type'])['Value']
.agg([('Type','count'), ('Value','sum')])
.unstack(fill_value=0))
df1.columns = df1.columns.map('_'.join)
df1 = df1.reset_index()
print (df1)
Country Quarter Division Type_A Type_B Value_A Value_B
0 A 1 Sales 2 0 300 0
1 A 2 Marketing 1 0 50 0
2 A 2 Sales 1 1 150 50
3 A 3 Sales 0 2 0 70

关于python - 汇总数据集并创建新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56557705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com