我找不到一种简单的方法来移动pandas DataFrame,但不是丢弃最后的值,而是将它们移到开头。
e.g。
使用此代码:
import pandas as pd
df = pd.DataFrame(dict(val=[10, 20, 30, 40]))
df.shift(1)
我获得:
val
0 NaN
1 10
2 20
3 30
但我想获得:
val
0 40
1 10
2 20
3 30
(已丢弃的40个应该填满它留下的空白区域)
有什么想法吗?
答案 0 :(得分:4)
你在np.roll
之后,这将滚动元素传递结束并沿着轴将它们包回到开头:
In [121]:
np.roll(df,1)
Out[121]:
array([[40],
[10],
[20],
[30]], dtype=int64)
In [123]:
df['val'] = np.roll(df, 1)
df
Out[123]:
val
0 40
1 10
2 20
3 30