从相同pandas数据帧的切片中减去切片

时间:2018-03-26 05:36:06

标签: python pandas

我们说我们有

In [0]: df = pd.DataFrame(data={'col1': [1, 2, 3], 'col2': [3, 4, 5]})
In [1]: df
Out[2]: 
   col1  col2
0     1     3
1     2     4
2     3     5

我需要从df[:-1]中减去df[1:]并得到一个数据帧,如下所示:

Out[3]: 
   col1  col2
0   1.0   1.0
1   1.0   1.0

但我当然得到

Out[11]: 
   col1  col2
0   NaN   NaN
1   0.0   0.0
2   NaN   NaN

我尝试使用iloc进行切片,但结果相同。我知道df.values,但我需要一个数据帧。

1 个答案:

答案 0 :(得分:1)

我认为需要diff并按iloc删除第一个NaN行:

df1 = df.diff().iloc[1:].reset_index(drop=True)
print (df1)
   col1  col2
0   1.0   1.0
1   1.0   1.0

另一个解决方案是使用DataFrame构造函数减去numpy数组:

df1 = pd.DataFrame(df[1:].values - df[:-1].values, columns=df.columns)
print (df1)
   col1  col2
0     1     1
1     1     1