gpt4 book ai didi

python - Pandas groupby 多个字段然后 diff

转载 作者:行者123 更新时间:2023-11-28 19:47:02 25 4
gpt4 key购买 nike

所以我的数据框看起来像这样:

         date    site country  score
0 2018-01-01 google us 100
1 2018-01-01 google ch 50
2 2018-01-02 google us 70
3 2018-01-03 google us 60
4 2018-01-02 google ch 10
5 2018-01-01 fb us 50
6 2018-01-02 fb us 55
7 2018-01-03 fb us 100
8 2018-01-01 fb es 100
9 2018-01-02 fb gb 100

每个站点根据国家/地区有不同的分数。我试图找出每个 site/country 组合的 score 的 1/3/5 天差异。

输出应该是:

          date    site country  score  diff
8 2018-01-01 fb es 100 0.0
9 2018-01-02 fb gb 100 0.0
5 2018-01-01 fb us 50 0.0
6 2018-01-02 fb us 55 5.0
7 2018-01-03 fb us 100 45.0
1 2018-01-01 google ch 50 0.0
4 2018-01-02 google ch 10 -40.0
0 2018-01-01 google us 100 0.0
2 2018-01-02 google us 70 -30.0
3 2018-01-03 google us 60 -10.0

我首先尝试按site/country/date 排序,然后按site 分组国家/地区,但我无法全神贯注地从分组对象中获得差异。

最佳答案

首先,对 DataFrame 进行排序,然后您只需要 groupby.diff():

df = df.sort_values(by=['site', 'country', 'date'])

df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)

df
Out:
date site country score diff
8 2018-01-01 fb es 100 0.0
9 2018-01-02 fb gb 100 0.0
5 2018-01-01 fb us 50 0.0
6 2018-01-02 fb us 55 5.0
7 2018-01-03 fb us 100 45.0
1 2018-01-01 google ch 50 0.0
4 2018-01-02 google ch 10 -40.0
0 2018-01-01 google us 100 0.0
2 2018-01-02 google us 70 -30.0
3 2018-01-03 google us 60 -10.0

sort_values 不支持任意排序。如果您需要任意排序(例如在 fb 之前使用 google),您需要将它们存储在一个集合中并将您的列设置为分类。然后 sort_values 将遵循您在此处提供的顺序。

关于python - Pandas groupby 多个字段然后 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48347497/

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