Pandas Groupby 多个字段以实现基于时间的差异
在数据分析领域,比较随时间的变化是一项至关重要的任务。 Pandas 是一个多功能的 Python 库,提供了处理此类操作的强大功能。当处理按多个分类字段和时间组织的数据时,groupby.diff() 方法被证明是无价的。
考虑像提供的那样的 DataFrame,其中每个站点在不同国家/地区和日期都有不同的分数。目标是计算每个站点/国家/地区组合的 1/3/5 天分数差异。
问题解决
为了实现这一目标,我们利用以下步骤:
<code class="python">df = df.sort_values(by=['site', 'country', 'date']) df['diff'] = df.groupby(['site', 'country'])['score'].diff().fillna(0)</code>
输出:
结果是一个显示计算得分差异的 DataFrame:
date | site | country | score | diff |
---|---|---|---|---|
2018-01-01 | fb | es | 100 | 0.0 |
2018-01-02 | fb | gb | 100 | 0.0 |
2018-01-01 | fb | us | 50 | 0.0 |
2018-01-02 | fb | us | 55 | 5.0 |
2018-01-03 | fb | us | 100 | 45.0 |
2018-01-01 | ch | 50 | 0.0 | |
2018-01-02 | ch | 10 | -40.0 | |
2018-01-01 | us | 100 | 0.0 | |
2018-01-02 | us | 70 | -30.0 | |
2018-01-03 | us | 60 | -10.0 |
高级排序
如果需要任意顺序,例如优先考虑“google”而不是“fb”,可以创建一个分类列并将其指定为排序参数。这可确保维持指定的顺序。
以上是如何使用 Groupby 和 diff() 计算 Pandas DataFrames 中基于时间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!