在python中按日期和ID计算值的变化

我有一个包含三列的数据框:ID、日期(总是月末)和给定日期的给定 ID 的值。这些值随时间而变化,并且对于 ID 是唯一的。如何计算给定 ID 从一个月到下个月的价值变化(百分比和绝对值)?


这是样本数据。我想有一个新的列,它将显示对于 ID 1850,从 2007-12-01 到 2008-01-01 的变化是 0.0004,依此类推,每个 ID 的每个月都在逐月变化。总共有大约 100k 行和大约 1000 个不同的 ID


Date                ID       value_

2007-12-01 00:00:00 1850    -0.0496133979294919

2008-01-01 00:00:00 1850    -0.0500387131996307

2008-02-01 00:00:00 1850    -0.0492422215808407

2007-02-01 00:00:00 4022    -0.0195919625346613

2007-03-01 00:00:00 4022    -0.0194071594854936

2007-04-01 00:00:00 4022    -0.00949770507514844

2007-05-01 00:00:00 4022    -0.00611289851053481

2007-06-01 00:00:00 4022    -0.00966828278354329

2007-07-01 00:00:00 4022    -0.010420327834716

2007-08-01 00:00:00 4022    -0.00374361336176163

2007-09-01 00:00:00 4022    -0.0217189168574824

2007-10-01 00:00:00 4022    -0.0210927493134818

2007-11-01 00:00:00 4022    -0.0208540558170204

2007-12-01 00:00:00 4022    -0.0281891859572789

2008-01-01 00:00:00 4022    -0.0342401666700859

2008-02-01 00:00:00 4022    -0.0345209140419046

2007-12-01 00:00:00 51667   -0.00457253924855003

2008-01-01 00:00:00 51667   -0.00613436134423086

2008-02-01 00:00:00 51667   -0.011212483689408

```)


海绵宝宝撒
浏览 81回答 1
1回答

qq_笑_17

确保数据框按 ID 和日期排序。按 ID 分组在值列上使用 diff():df['Date']= pd.to_datetime(df['Date'])df = df.sort_values(['ID','Date'])df['diff'] = df.groupby('ID')['value_'].diff().fillna(0)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python