【发布时间】:2020-11-05 10:55:27
【问题描述】:
我有一个数据集 df,我希望在其中找到百分比差异和差异。我希望查看最早的日期并将此值与下一个日期进行比较:
id date value
1 11/01/2020 10
2 11/01/2020 5
1 10/01/2020 20
2 10/01/2020 30
1 09/01/2020 15
2 09/01/2020 10
3 11/01/2020 5
期望的输出
id date diff percent
1 10/01/2020 5 33
1 11/01/2020 -10 -50
2 10/01/2020 20 200
2 11/01/2020 -25 -83.33
3 11/01/2020 0 0
我想一次查看一组,并将前一个值与下一个值进行比较,并找出增加百分比和差异。
例如,
ID 1,从 09/01/2020 到 10/01/2020:从 15 到 20时间>, 给出 5 的差异 百分比差异为 33%
从 10/01/2020 到 11/01/2020: 从 20 到 10, -10 的差异和 50% 的差异。
这就是我正在做的事情:
a['date'] = pd.to_datetime(a['date'])
grouped = a.sort_values('date').groupby(['id'])
output = pd.DataFrame({
'date': grouped['date'].agg(lambda x: x.iloc[-1]).values,
'diff': grouped['value'].agg(lambda x: x.diff().fillna(0).iloc[-1]).values,
'percentdiff': grouped['value'].agg(lambda x: x.pct_change().fillna(0).iloc[-1] * 100).values,
'type': grouped['id'].agg(lambda x: x.iloc[0]).values
})
但是,我注意到缺少一些值,因为这是我的输出:
是否有可能达到我想要的输出? 也许必须实现一个循环来引用上一个日期行并与下一个进行比较?
欢迎提出任何建议
【问题讨论】:
标签: python pandas numpy percentage