在Pandas 0.14.1中,diff()在时间序列开始时不会生成值。
使用diff()似乎将丢失数据与cumsum()不同,后者假定NaN ==0。我想知道是否有一种方法可以使diff()假定先前丢失的数据为0(丢失,因为它是从一开始就开始的)时间序列)。
例如:
>print df
2014-05-01 A Apple 1
B Banana 2
2014-06-01 A Apple 3
B Banana 4
结果是:
>print df.groupby(level=[1,2]).diff()
2014-05-01 A Apple NaN
B Banana NaN
2014-06-01 A Apple 2
B Banana 2
当所需的输出是:
2014-05-01 A Apple 1
B Banana 2
2014-06-01 A Apple 2
B Banana 2
最佳答案
据我所知,groupby(...).diff()
只调用np.diff
,它总是返回比传递给它的数组短1(或n)的数组。
但是,仅填充丢失的数据应该非常容易。像这样吗?
In [175]: df
Out[175]:
d
a b c
2014-05-01 A Apple 1
B Banana 2
2014-06-01 A Apple 3
B Banana 4
In [176]: df['diff'] = df.groupby(level=[1,2])['d'].diff()
In [177]: df['diff'] = df['diff'].fillna(df['d'])
In [178]: df
Out[178]:
d diff
a b c
2014-05-01 A Apple 1 1
B Banana 2 2
2014-06-01 A Apple 3 2
B Banana 4 2
关于python - 时间序列的第一条记录上的Pandas Diff(),缺少的数据返回NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25289132/