gpt4 book ai didi

python - 如何通过 groupby pandas python 添加多列

转载 作者:太空宇宙 更新时间:2023-11-04 08:38:45 25 4
gpt4 key购买 nike

假设我有一个数据框:

date | brand | color
--------------------
2017 | BMW | red
2017 | GM | blue
2017 | BMW | blue
2017 | BMW | red
2018 | BMW | green
2018 | GM | blue
2018 | GM | blue
2018 | GM | red

因此我想要这样的东西:

date | brand | red | blue | green
---------------------------------
2017 | BMW | 2 | 1 | 0
| GM | 0 | 1 | 0
2018 | BMW | 0 | 0 | 1
| GM | 1 | 2 | 0

我发现我需要使用 groupby + size,比如:

df[df['color'] == 'red'].groupby([df['date'], df['brand']]).size()

但这只给我单色系列,而我想要完整的数据框,如上图所示。

最佳答案

就像你看到的一样简单..

选项 1 交叉表

pd.crosstab([df['date'],df['brand']], df['color'])
Out[30]:
color blue green red
date brand
2017 BMW 1 0 2
GM 1 0 0
2018 BMW 0 1 0
GM 2 0 1

选项 2:groupbyunstack

df.groupby(['date ',' brand ',' color'])[' color'].count().unstack(-1).fillna(0)
Out[40]:
color blue green red
date brand
2017 BMW 1.0 0.0 2.0
GM 1.0 0.0 0.0
2018 BMW 0.0 1.0 0.0
GM 2.0 0.0 1.0

选项 3 pivot_table

pd.pivot_table(df.reset_index(),index=['date','brand'],columns='color',values='index',aggfunc='count').fillna(0)
Out[57]:
color blue green red
date brand
2017 BMW 1.0 0.0 2.0
GM 1.0 0.0 0.0
2018 BMW 0.0 1.0 0.0
GM 2.0 0.0 1.0

关于python - 如何通过 groupby pandas python 添加多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46507137/

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