我试图使数据帧 df 的最后两行成为数据帧的前两行,前一个第一行成为移位后的第三行。这是因为我刚刚添加了行 [3,0.3232, 0, 0, 2,0.500]
、[6,0.3232, 0, 0, 2,0.500]
。然而,当我希望它们成为前两行时,它们被添加到 df 的末尾,因此成为最后两行。我只是想知道如何做到这一点。
df = df.T
df[0] = [3,0.3232, 0, 0, 2,0.500]
df[1] = [6,0.3232, 0, 0, 2,0.500]
df = df.T
df = df.reset_index()
最佳答案
您只需调用 reindex
即可并传递新的所需订单:
In [14]:
df = pd.DataFrame({'a':['a','b','c']})
df
Out[14]:
a
0 a
1 b
2 c
In [16]:
df.reindex([1,2,0])
Out[16]:
a
1 b
2 c
0 a
编辑
另一种方法是使用 np.roll
请注意,这会返回 np.array
所以我们必须从 df 中显式选择列来覆盖它们:
In [30]:
df = pd.DataFrame({'a':['a','b','c'], 'b':np.arange(3)})
df
Out[30]:
a b
0 a 0
1 b 1
2 c 2
In [42]:
df[df.columns] = np.roll(df, shift=-1, axis=0)
df
Out[42]:
a b
0 b 1
1 c 2
2 a 0
axis=0
参数似乎是必要的,否则列顺序不会保留:
In [44]:
df[df.columns] = np.roll(df, shift=-1)
df
Out[44]:
a b
0 0 b
1 1 c
2 2 a
关于python - 数据框中行的移动顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304063/