gpt4 book ai didi

python - 如何获取一列的不同值的计数

转载 作者:行者123 更新时间:2023-12-01 02:22:20 24 4
gpt4 key购买 nike

我有一张这样的 table

DURATION  FLAG
1 1
1 1
1 1
1 0
1 0
2 1
2 1
2 0
2 0
2 0
3 1
3 0
3 0
3 0
3 0

FLAG 列只有两种值,即 1 和 0。我想计算 FLAG 的每个值的数量,结果如下

DURATION  FLAG_1_COUNT  FLAG_0_COUNT
1 3 2
2 2 3
3 1 4

怎样才能得到上面的结果。我尝试了以下代码,但没有返回正确的结果。

df.groupby(['DURATION', 'FLAG']).size().reset_index(name='count')

最佳答案

选项 1
str.get_dummies + sum -

df.set_index('DURATION').FLAG\
.astype(str).str.get_dummies().sum(level=0)

0 1
DURATION
1 2 3
2 3 2
3 4 1

或者,与 pd.get_dummies 等效 -

pd.get_dummies(df.set_index('DURATION').FLAG).sum(level=0)

0 1
DURATION
1 2 3
2 3 2
3 4 1

对于列名称,您可以使用 add_*fix -

pd.get_dummies(df.set_index('DURATION').FLAG)\
.sum(level=0).add_prefix('FLAG_').add_suffix('_COUNT')

FLAG_0_COUNT FLAG_1_COUNT
DURATION
1 2 3
2 3 2
3 4 1

如果您需要重置索引,请使用reset_index -

i = df.set_index('DURATION').FLAG    
pd.get_dummies(i)\
.sum(level=0)\
.add_prefix('FLAG_')\
.add_suffix('_COUNT')\
.reset_index()

DURATION FLAG_0_COUNT FLAG_1_COUNT
0 1 2 3
1 2 3 2
2 3 4 1
<小时/>

选项 2
groupby + value_counts + unstack

df.groupby('DURATION').FLAG.value_counts().unstack(-1)

FLAG 0 1
DURATION
1 2 3
2 3 2
3 4 1

关于python - 如何获取一列的不同值的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47845672/

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