gpt4 book ai didi

python - 根据 Pandas 数据帧的其他列中的值计算列值

转载 作者:太空狗 更新时间:2023-10-29 21:53:59 24 4
gpt4 key购买 nike

我正在尝试为每个独特的 xy 组合计算每个类别 Storm 的数量。例如。我的数据框看起来像:

x   y  year  Category
1 1 1988 3
2 1 1977 1
2 1 1999 2
3 2 1990 4

我想创建一个如下所示的数据框:

x   y   Category 1   Category 2   Category 3  Category 4
1 1 0 0 1 0
2 1 1 1 0 0
3 2 0 0 0 1

我已经尝试了 .groupby().count() 的各种组合,但我仍然没有得到想要的结果。我能得到的壁橱里的东西是:

df[['x','y','Category']].groupby(['Category']).count()

但是,结果对所有 xy 都有效,而不是唯一对:

Cat       x           y     
1 3773 3773
2 1230 1230
3 604 604
4 266 266
5 50 50
NA 27620 27620
TS 16884 16884

有谁知道如何根据数据框中其他两列的唯一性对一列进行计数操作?

最佳答案

pivot_table 听起来像你想要的。有点技巧是添加一列 1用于计数。这允许 pivot_table添加1对于每次出现的特定 x - yCategory组合。您将把这个新列设置为您的 value pivot_table 中的参数和 aggfunc参数为 np.sum .你可能想要设置 fill_value0还有:

df['count'] = 1
result = df.pivot_table(
index=['x', 'y'], columns='Category', values='count',
fill_value=0, aggfunc=np.sum
)

result :

Category  1  2  3  4
x y
1 1 0 0 1 0
2 1 1 1 0 0
3 2 0 0 0 1

如果您有兴趣保留 xy作为列并将其他列名称作为 Category X ,您可以重命名列并使用 reset_index :

result.columns = [f'Category {x}' for x in result.columns]
result = a.reset_index()

关于python - 根据 Pandas 数据帧的其他列中的值计算列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54527134/

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