gpt4 book ai didi

python - 从数据框中的值计算增量

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:09 24 4
gpt4 key购买 nike

我有这个 DataFrame(这只是一个例子,不是真正的数据):

In [1]: import pandas as pd
my_data = [{'client_id' : '001', 'items' : '10', 'month' : 'Jan'},
{'client_id' : '001', 'items' : '20', 'month' : 'Feb'},
{'client_id' : '001', 'items' : '30', 'month' : 'Mar'},
{'client_id' : '002', 'items' : '30', 'month' : 'Jan'},
{'client_id' : '002', 'items' : '20', 'month' : 'Feb'},
{'client_id' : '002', 'items' : '15', 'month' : 'Mar'},
{'client_id' : '003', 'items' : '10', 'month' : 'Jan'},
{'client_id' : '003', 'items' : '20', 'month' : 'Feb'},
{'client_id' : '003', 'items' : '15', 'month' : 'Mar'}]
df = pd.DataFrame(my_data)

In [2]: df
Out [2]:
client_id month items
0 001 Jan 10
1 001 Feb 20
2 001 Mar 30
3 002 Jan 30
4 002 Feb 20
5 002 Mar 15
6 003 Jan 10
7 003 Feb 20
8 003 Mar 15

我想要的是计算每对月份购买的增量项。也就是说,例如,客户“001”在二月份 (20) 购买的商品比一月份 (10) 多购买了 10 件商品。客户 '002',购买了 -10 件商品(2 月 20 日、1 月 30 日)。最终的 DataFrame 看起来像这样:

In [3]: delta_df
Out [3]:
client_id delta_items_feb delta_items_mar
0 001 10 10
1 002 -10 -5
2 003 10 -5

有什么想法吗?

最佳答案

这是一种方法,使用 pivot_table 首先按客户和月份对项目计数进行分组:

(我首先使用 df.items = df.items.astype(int)items 列转换为整数)

>>> table = df.pivot_table(values='items', rows='client_id', cols='month')
>>> table = table[['Jan', 'Feb', 'Mar']]
>>> pd.DataFrame(np.diff(table.values),
columns=['delta_items_feb', 'delta_items_mar'],
index=table.index).reset_index()

client_id delta_items_feb delta_items_mar
0 001 10 10
1 002 -10 -5
2 003 10 -5

注意:在较新版本的 pandas 中,创建时使用 index/columns 而不是 rows/cols数据透视表。

这个:

  • 按客户和日期对数据进行透视以显示每个客户的商品数量
  • 确保表格中的列按月份正确排序
  • 使用 np.diff 计算连续月份之间的差异,并使用所需的列名创建一个新的 DataFrame

关于python - 从数据框中的值计算增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27426541/

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