我有一个 pandas 数据框
df
包含 5 行和 2 列。
A B
0 10 0
1 20 5
2 30 10
3 40 15
4 50 20
df.to_dict()
回归
{'A': {0: 10, 1: 20, 2: 30, 3: 40, 4: 50},
'B': {0: 0, 1: 5, 2: 10, 3: 15, 4: 20}}
对于 A 列,我想将每个项目移动到下面两行。我不想将
nan
值放在顶部,而是想将两个从底部推出到顶部的元素。
对于 B 列,我想做相反的事情 - 将每个项目移动到上面两行。我不想将
nan
值放在底部,而是希望将两个元素从顶部推出到底部。
我可以使用
df["A"].shift(2)
和df["B"].shift(-2)
。但是,我得到了 nan 值。
我的预期结果是:
A B
0 40 10
1 50 15
2 10 20
3 20 0
4 30 5
我怎样才能实现这个目标?
numpy.roll
代替 shift
:
df['A'] = np.roll(df["A"], 2)
df['B'] = np.roll(df["B"], -2)
print (df)
A B
0 40 10
1 50 15
2 10 20
3 20 0
4 30 5