python - 熊猫按日期比较值
问题描述
我有一个像
Date, Name, Something
2020-04-01,John,10
2020-04-01,Ivory,5
2020-04-01,Sam,3
2020-04-02,John,5
2020-04-02,Ivory,2
2020-04-02,Sam,1
2020-04-02,John,20
2020-04-02,Ivory,3
2020-04-02,Sam,9
与熊猫一起工作,我想按名称比较昨天的值,今天的结果是增加,减少。shift(3) 不起作用,因为每天的名称数量不同。我该怎么做。我想添加以前的号码。我试过了
df['old_data'] = df[(work['Name'] == df['Name']) & (df['Date'] ==
(df['Date'] - pd.Timedelta(days = 1))
)]['Something']
但它没有用。
解决方案
尝试这个:
import pandas as pd
df = pd.DataFrame({'Date': {0:'2020-04-01', 1:'2020-04-01', 2:'2020-04-01',
3:'2020-04-02', 4:'2020-04-02', 5:'2020-04-02',
6:'2020-04-03', 7:'2020-04-03', 8:'2020-04-03'},
'Name': {0:'John', 1:'Ivory', 2:'Sam',
3:'John', 4:'Ivory', 5:'Sam',
6:'John', 7:'Ivory', 8:'Sam'},
'Something': {0:10, 1:5, 2:3,
3:5, 4:2, 5:1,
6:20, 7:3, 8:9}})
df['diff'] = df.groupby('Name')['Something'].diff()
df.dropna()
我通过将最后三个日期更改为“2020-04-03”来更改您的数据。
推荐阅读
- azure - Azure - 为更新管理创建部署
- rust - 从 TlsStream 读取
在 Rust 中使用 `tokio-rustls` - javascript - 为什么我们需要在 react 中绑定事件处理程序
- javascript - 如何修复 TypeError:将循环结构转换为 JSON
- javascript - 为什么上下文未定义
- angularjs - AngularJS 服务不是单例的
- c# - 使用 Microsoft.Web.Administration 将应用程序池添加到 iis C#
- c - gtk3:如何将关键事件/加速器(快捷方式)从本地传播到全球?
- angular - 基于另一个材料复选框更新的复选框
- c++ - 从 C++ 连接到 MySQL,getString() 无法正常工作