python - 如何获得数据框中行的值的差异?(用于客户代码)
问题描述
我的数据集有 Customer_Code、As_Of_Date 和 24 个产品。产品的值为 0 -1。我按客户代码和 as_of_date 订购了数据集。我想从产品的下一行减去上一行。这里重要的是根据他们的 as_of_date 让每个客户离开。
我试试
df2.set_index('Customer_Code').diff()
和
df2.set_index('As_Of_Date').diff()
和
对于我在 new["Customer_Code"].unique():
df14 = df12.set_index('As_Of_Date').diff()
但不是真的。我的代码适用于第一个客户,但不适用于第二个客户。我该怎么办?
解决方案
你没有分享任何数据,所以我编造了一些你可以使用的东西。您的预期结果也有所欠缺。如需进一步参考,请勿分享图片。假设您有以下数据:
id date product
0 12 2008-01-01 1
1 12 2008-01-01 2
2 12 2008-01-01 1
3 12 2008-01-02 4
4 12 2008-01-02 5
5 34 2009-01-01 6
6 34 2009-01-01 7
7 34 2009-01-01 84
8 34 2009-01-02 4
9 34 2009-01-02 3
10 34 2009-01-02 3
11 34 2009-01-03 5
12 34 2009-01-03 6
13 34 2009-01-03 8
据我了解,您想从上一行中减去产品值,按 id 和日期分组。(如果有任何其他组,适应)。然后你需要这样做:
mask = df.duplicated(['id', 'date'])
df['product_diff'] = (np.where(mask, (df['product'] - df['product'].shift(1)), np.nan))
返回:
id date product product_diff
0 12 2008-01-01 1 NaN
1 12 2008-01-01 2 1.0
2 12 2008-01-01 1 -1.0
3 12 2008-01-02 4 NaN
4 12 2008-01-02 5 1.0
5 34 2009-01-01 6 NaN
6 34 2009-01-01 7 1.0
7 34 2009-01-01 84 77.0
8 34 2009-01-02 4 NaN
9 34 2009-01-02 3 -1.0
10 34 2009-01-02 3 0.0
11 34 2009-01-03 5 NaN
12 34 2009-01-03 6 1.0
13 34 2009-01-03 8 2.0
或者如果你想反过来:
mask = df.duplicated(['id', 'date'])
df['product_diff'] = (np.where(mask, (df['product'] - df['product'].shift(-1)), np.nan))
这使:
id date product product_diff
0 12 2008-01-01 1 NaN
1 12 2008-01-01 2 1.0
2 12 2008-01-01 1 -3.0
3 12 2008-01-02 4 NaN
4 12 2008-01-02 5 -1.0
5 34 2009-01-01 6 NaN
6 34 2009-01-01 7 -77.0
7 34 2009-01-01 84 80.0
8 34 2009-01-02 4 NaN
9 34 2009-01-02 3 0.0
10 34 2009-01-02 3 -2.0
11 34 2009-01-03 5 NaN
12 34 2009-01-03 6 -2.0
13 34 2009-01-03 8 NaN
推荐阅读
- python - 用 numpy 填充序列并将特征数组与序列数组的数量相结合
- php - PHP Webhook 请求
- c# - 从对象转换为 IList
派生类:foreach 失败 - amazon-web-services - AWS S3 with Basic Auth with Lambda 在刷新页面时提供 AccessDenied
- java - 如何在 spring-boot 项目中向 pom.xml 添加非 spring-boot 依赖项
- javascript - 如何创建可拖动的 Web 组件
- java - 将具有相同标签的 xml 结构解组到不同的字段
- c# - 升级到 NetCore 3.1 后找不到版本 (= 2.2.7) 的软件包 Microsoft.NETCore.App.Host.win-x64
- sql - SQL UPDATE ORA-01427: 单行子查询返回多于一行的计算百分比
- python - 目标结构会影响神经网络性能吗?