Shift结果解释

问题描述 投票:1回答:2

我想添加一个新列Datadiff,该列计算数据帧Data的相邻df行中的差异:

        Id  Timestamp               Data       Timediff Datadiff
696     697 2013-08-12 10:35:47.287 30.0        0.510   -1.0
885     886 2013-08-12 10:37:35.850 30.5        -0.203  5.0
886     887 2013-08-12 10:37:36.373 31.5        0.523   1.0
917     918 2013-08-12 10:37:45.137 31.5        -0.510  34.5
1018   1019 2013-08-12 11:17:13.570 25.0        0.000   0.0
1357   1358 2013-08-12 12:42:21.280 25.0        -0.347  28.0

使用代码:

df['Timediff']= (df['Timestamp']-df['Timestamp'].shift(1)).dt.total_seconds()
df['Datadiff']= (df['Data']-df['Data'].shift(1))
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df = df[df['Data']>0]
df.head(500)

但是Datadiff列看起来很奇怪。 shift(1)如何工作?怎么了?

python pandas numpy timestamp shift
2个回答
0
投票

对于我来说,工作正常,通过差值比较返回相同的输出:


1
投票

您需要重置索引,然后应用diff()运算符:

© www.soinside.com 2019 - 2024. All rights reserved.