熊猫-通过计算不同行来计算新列

时间:2020-04-03 17:32:39

标签: pandas row calculated-columns

给出这样的熊猫数据框:

import pandas as pd

d = {'date': ['20200315', '20200314', '20200313'], 'units': [700, 500, 400]}
df = pd.DataFrame(data=d)
df
   date       units
0  20200315   700
1  20200314   500
2  20200313   400

如何创建新列“ change”(列),该列的值等于今天的单位减去昨天的单位?除了在进行数学运算之前遍历每一行并存储每个单位的值之外,是否有其他方法可以轻松地做到这一点?我想结束:

   date       units   change
0  20200315   700     200
1  20200314   500     100
2  20200313   400     0

2 个答案:

答案 0 :(得分:1)

您可以按日期排序,使用滚动,然后应用值之间的差,最后用0填充nan:

df['change'] = df.sort_values(by='date')['units'].rolling(2).apply(lambda x: x.iloc[1] - x.iloc[0]).fillna(0)

答案 1 :(得分:0)

我认为日期已经排序,如果可以,则可以使用diff方法:

 df['change'] = df.units.diff(-1).fillna(0)

     date      units    change
0   20200315    700     200.0
1   20200314    500     100.0
2   20200313    400     0.0