gpt4 book ai didi

python - Pandas 按功能聚合

转载 作者:行者123 更新时间:2023-11-28 22:16:43 24 4
gpt4 key购买 nike

我有如下数据:

id  movie   details value
5 cane1 good 6
5 wind2 ok 30.3
5 wind1 ok 18
5 cane1 good 2
5 cane22 ok 4
5 cane34 good 7
5 wind2 ok 2

我想要符合以下标准的输出:

如果电影名称以 'cane' 开头 - 对值求和

如果电影名称以“wind”开头 - 计算出现次数。

所以 - 最终输出将是:

id  movie   value
5 cane1 8
5 cane22 4
5 cane34 7
5 wind1 1
5 wind2 2

我尝试使用:

movie_df.groupby(['id']).apply(aggr)

def aggr(x):
if x['movie'].str.startswith('cane'):
y = x.groupby(['value']).sum()

else:
y = x.groupby(['movie']).count()

return y

但它不起作用。有人可以帮忙吗?

最佳答案

您应该尽可能进行矢量化操作。

您可以计算 2 个结果,然后将它们连接起来。

mask = df['movie'].str.startswith('cane')

df1 = df[mask].groupby('movie')['value'].sum()
df2 = df[~mask].groupby('movie').size()

res = pd.concat([df1, df2], ignore_index=0)\
.rename('value').reset_index()

print(res)

movie value
0 cane1 8.0
1 cane22 4.0
2 cane34 7.0
3 wind1 1.0
4 wind2 2.0

关于python - Pandas 按功能聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52006414/

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