gpt4 book ai didi

python - pandas 在pivot_table期间聚合多个列

转载 作者:行者123 更新时间:2023-12-02 18:04:47 24 4
gpt4 key购买 nike

有一个像这样的数据框:

df = pd.DataFrame((['1990-01-01','A','S1','2','string2','string3'],
['1990-01-01','A','S2','1','string1','string4'],
['1990-01-01','A','S3','1','string5','string6']),columns=
["date","type","status","count","s1","s2")


date type status count s1 s2
0 1990-01-01 A S1 2 string2 string3
1 1990-01-01 A S2 1 string1 string4
2 1990-01-01 A S3 1 string5 string6
...

我想要得到以下结果(每个日期和每种类型应该有单行,并获取 s1 列的最小值,获取 s2 列的最大值)

date             type       S1    S2   S3    min_s1        max_s2
1990-01-01 A 2 1 1 string1 string6

我尝试使用pivot_table

df.pivot_table(index=['date','type'],columns=['status'],values=['count','s1','s2'], aggfunc={
'count':np.sum,
's1': np.min,
's2': np.max
})

但这只会得到以下结果,这会导致多列,而不是最终结果。

                count             s1                         s2
status S1 S2 S3 S1 S2 S3 S1 S2 S3
date type
1990-01-01 A 2 1 1 string2 string1 string5 string3 string4 string6

有人有想法吗?谢谢。

最佳答案

看起来您想组合 pivotgroupby.agg :

(df.pivot(index=['date','type'],columns='status', values='count')
.join(df.groupby(['date', 'type']).agg({'s1': 'min', 's2': 'max'}))
.reset_index()
)

输出:

         date type S1 S2 S3       s1       s2
0 1990-01-01 A 2 1 1 string1 string6

关于python - pandas 在pivot_table期间聚合多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73555758/

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