给出这样的熊猫数据框:
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
答案 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