我有一个示例数据框" df":
df = pd.DataFrame({'Year': [2000, 2002, 2003, 2004],
'Name': ['A'] * 4,
'Value': [4, 1, 1, 3]})
当我执行pct_change()即
时df['change'] = df['Value'].pct_change()
计算的"更改"行Year = 2002的值是-0.75。我怎能让Pandas返回2002年的N / A,因为2001年的数据丢失了,因为我只想考虑前一年的时间序列?
干杯。
答案 0 :(得分:2)
将set_index
+ reindex
+ pct_change
与fill_method=None
-
Year
设为索引NaN
s pct_change
上致电Value
而不填充NaN
。 r = np.arange(df.Year.min(), df.Year.max() + 1)
df = df.set_index('Year').reindex(r)
v = df['Value'].pct_change(fill_method=None)
df = df.assign(Change=v).dropna(how='all').reset_index()
df
Year Name Value Change
0 2000 A 4.0 NaN
1 2002 A 1.0 NaN
2 2003 A 1.0 0.0
3 2004 A 3.0 2.0