Python 为具有相同ID的行计算同一列中的数值,并仅为具有最新日期的行将计算结果另存为新列
我是Python新手,尝试计算两个不同日期的“单位”列中两个数字之间的百分比差,并将其结果保存为新列中的值(My_Calculation_result)。此值应仅出现在具有最新日期的行上 ((单位[日期为2020-02-01]-单位[日期为2020-01-25])/单位[日期为2020-01-25])*100% 我的初始CSV文件结构:Python 为具有相同ID的行计算同一列中的数值,并仅为具有最新日期的行将计算结果另存为新列,python,pandas,math,Python,Pandas,Math,我是Python新手,尝试计算两个不同日期的“单位”列中两个数字之间的百分比差,并将其结果保存为新列中的值(My_Calculation_result)。此值应仅出现在具有最新日期的行上 ((单位[日期为2020-02-01]-单位[日期为2020-01-25])/单位[日期为2020-01-25])*100% 我的初始CSV文件结构: Date, ID, Name, Units, 2020-02-01, 123, Guitar, 200, 2020
Date, ID, Name, Units,
2020-02-01, 123, Guitar, 200,
2020-02-01, 456, Drums, 150,
2020-02-01, 789, Piano, 340,
2020-01-25, 123, Guitar, 980,
2020-01-25, 456, Drums, 3,
2020-01-25, 789, Piano, 300,
所需的CSV输出:
在输出文件中,我只需要将计算结果添加到具有最新日期的行中
Date, ID, Name, Units, My_Calculation_Result
2020-02-01, 123, Guitar, 200, -79.59%
2020-02-01, 456, Drums, 150, 49.00%
2020-02-01, 789, Piano, 340, 11.76%
2020-01-25, 123, Guitar, 980,
2020-01-25, 456, Drums, 3,
2020-01-25, 789, Piano, 300,
感谢您在此之前提供的任何帮助 IIUC:
df['My_Cal_Result'] = df.groupby(['ID']).Units.pct_change(-1)
输出:
Date ID Name Units My_Cal_Result
0 2020-02-01 123 Guitar 200 -0.795918
1 2020-02-01 456 Drums 150 49.000000
2 2020-02-01 789 Piano 340 0.133333
3 2020-01-25 123 Guitar 980 NaN
4 2020-01-25 456 Drums 3 NaN
5 2020-01-25 789 Piano 300 NaN