Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为具有相同ID的行计算同一列中的数值,并仅为具有最新日期的行将计算结果另存为新列_Python_Pandas_Math - Fatal编程技术网

Python 为具有相同ID的行计算同一列中的数值,并仅为具有最新日期的行将计算结果另存为新列

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

我是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-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