假设我们有
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 2.0 1.3333333333333333
1 1.5 1.25
但是我当然得到了
Out[3]:
col1 col2
0 NaN NaN
1 1.0 1.0
2 NaN NaN
我尝试使用iloc
进行切片,但得到了相同的结果。我知道 df.values,但我需要一个数据帧作为结果。非常感谢。
最佳答案
您可以划分 values
创建的 numpy 数组使用 DataFrame
构造函数:
df1 = pd.DataFrame(df[1:].values / df[:-1].values, columns=df.columns)
print (df1)
col1 col2
0 2.0 1.333333
1 1.5 1.250000
或者在两个DataFrames
中设置相同的索引:
df1 = df[1:].reset_index(drop=True).div(df[:-1].reset_index(drop=True))
<小时/>
a = df[1:]
b = df[:-1]
b.index = a.index
df1 = a / b
<小时/>
df2 = df[1:]
df1 = df2.div(df[:-1].set_index(df2.index))
print (df1)
col1 col2
1 2.0 1.333333
2 1.5 1.250000
关于python - 将同一个 pandas 数据帧的切片分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49486209/