我有一个包含三列的数据框:ID、日期(总是月末)和给定日期的给定 ID 的值。这些值随时间而变化,并且对于 ID 是唯一的。如何计算给定 ID 从一个月到下个月的价值变化(百分比和绝对值)?这是样本数据。我想有一个新的列,它将显示对于 ID 1850,从 2007-12-01 到 2008-01-01 的变化是 0.0004,依此类推,每个 ID 的每个月都在逐月变化。总共有大约 100k 行和大约 1000 个不同的 IDDate ID value_2007-12-01 00:00:00 1850 -0.04961339792949192008-01-01 00:00:00 1850 -0.05003871319963072008-02-01 00:00:00 1850 -0.04924222158084072007-02-01 00:00:00 4022 -0.01959196253466132007-03-01 00:00:00 4022 -0.01940715948549362007-04-01 00:00:00 4022 -0.009497705075148442007-05-01 00:00:00 4022 -0.006112898510534812007-06-01 00:00:00 4022 -0.009668282783543292007-07-01 00:00:00 4022 -0.0104203278347162007-08-01 00:00:00 4022 -0.003743613361761632007-09-01 00:00:00 4022 -0.02171891685748242007-10-01 00:00:00 4022 -0.02109274931348182007-11-01 00:00:00 4022 -0.02085405581702042007-12-01 00:00:00 4022 -0.02818918595727892008-01-01 00:00:00 4022 -0.03424016667008592008-02-01 00:00:00 4022 -0.03452091404190462007-12-01 00:00:00 51667 -0.004572539248550032008-01-01 00:00:00 51667 -0.006134361344230862008-02-01 00:00:00 51667 -0.011212483689408```)
1 回答

qq_笑_17
TA贡献1818条经验 获得超7个赞
确保数据框按 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)
添加回答
举报
0/150
提交
取消