【发布时间】:2021-12-25 11:07:30
【问题描述】:
我试图旋转数据框的行,其中第一行是最后一行,第二行是第一行,依此类推
原创
| A | |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 5 | 6 |
结果
| A | |
|---|---|
| 0 | 6 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
我该怎么做?
【问题讨论】:
标签: python python-3.x pandas dataframe
我试图旋转数据框的行,其中第一行是最后一行,第二行是第一行,依此类推
原创
| A | |
|---|---|
| 0 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 4 |
| 4 | 5 |
| 5 | 6 |
结果
| A | |
|---|---|
| 0 | 6 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
我该怎么做?
【问题讨论】:
标签: python python-3.x pandas dataframe
使用来自 numpy 的 np.roll:
import numpy as np
df['A'] = np.roll(df['A'], 1)
print(df)
# Output:
A
0 6
1 1
2 2
3 3
4 4
5 5
【讨论】:
iloc[]。感谢您的回答!
我认为您可能需要将np.arange() 与iloc[] 一起使用。如果您希望索引保持不变,请添加.reset_index():
df = pd.DataFrame({'A':[1,2,3,4,5,6]})
df.iloc[np.arange(-1, len(df)-1)].reset_index(drop=True)
返回:
A
0 6
1 1
2 2
3 3
4 4
5 5
【讨论】:
如果您正在寻找仅使用 pandas 的解决方案,这应该可以为您完成工作-
df = pd.concat([df.iloc[-1:], df.iloc[0:-1]])
df.reset_index(inplace=True, drop=True)
【讨论】: