python - 将同一个 pandas 数据帧的切片分割

标签 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   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/

相关文章:

python - 使用 python 查找给定字符串的所有可能的旋转

python - 在不更改数据结构的情况下搜索列表列表中的元组元素

python - 当切片索引超出范围时如何引发 IndexError?

python - 当变量在python的if条件中定义时,如何访问if条件后的变量

python - 如何复制 pandas 中的行?

python - Seaborn/Matplotlib - 仅在 FacetGrid 中显示某些 X 值

python - 提高 Python 中非常大的列表的计数速度/性能

python - 使用 Pandas 在 Dataframe 列中查找紧密匹配的值索引

python - Pandas 内爆数据框,其值由字符分隔

python - 具有堆叠组件的直方图