Pandas groupby 在多个字段上进行差异计算
在编程中,操作数据至关重要,Pandas 是执行这些任务的强大库高效。一个常见的问题是如何按多个字段对数据进行分组并计算差异。让我们探索如何实现这一目标。
问题:
考虑具有以下结构的 DataFrame:
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 ...
目标是找到每个“地点/国家”组合的分数存在 1/3/5 天的差异。
解决方案:
为了解决这个问题,我们可以利用 Pandas 的 groupby和 diff 函数:
df = df.sort_values(by=['site', 'country', 'date'])
排序可确保我们的数据组织正确的分组和差异计算。
df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)
此行使用 groupby 按“site”和“country”列对 DataFrame 进行分组。然后,它使用 diff 计算每组内每个连续分数之间的差异。结果存储在名为“diff”的新列中。使用 fillna(0) 将任何缺失值替换为 0。
输出:
生成的 DataFrame 将包含原始列以及“diff”列:
date site country score diff 0 2018-01-01 fb es 100 0.0 1 2018-01-02 fb gb 100 0.0 ...
附加说明:
以上是如何计算 Pandas DataFrame 中多个字段的分数差异?的详细内容。更多信息请关注PHP中文网其他相关文章!