如何在Pandas DataFram中移动列

2024-09-28 19:06:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在PandasDataFrame中移动一个列,但是在没有重写整个DF的情况下,我还无法从文档中找到方法来执行此操作。有人知道怎么做吗? 数据帧:

##    x1   x2
##0  206  214
##1  226  234
##2  245  253
##3  265  272
##4  283  291

期望输出:

##    x1   x2
##0  206  nan
##1  226  214
##2  245  234
##3  265  253
##4  283  272
##5  nan  291

Tags: 数据方法文档df情况nanx1x2
3条回答

如果不想丢失在数据帧末尾移位的列,只需先附加所需的数字:

    offset = 5
    DF = DF.append([np.nan for x in range(offset)])
    DF = DF.shift(periods=offset)
    DF = DF.reset_index() #Only works if sequential index
In [18]: a
Out[18]: 
   x1  x2
0   0   5
1   1   6
2   2   7
3   3   8
4   4   9

In [19]: a.x2 = a.x2.shift(1)

In [20]: a
Out[20]: 
   x1  x2
0   0 NaN
1   1   5
2   2   6
3   3   7
4   4   8

您需要在这里使用df.shift
df.shift(i)将整个数据帧向下移动i个单位。

因此,对于i = 1

输入:

    x1   x2  
0  206  214  
1  226  234  
2  245  253  
3  265  272    
4  283  291

输出:

    x1   x2
0  Nan  Nan   
1  206  214  
2  226  234  
3  245  253  
4  265  272 

因此,运行此脚本以获得预期的输出:

import pandas as pd

df = pd.DataFrame({'x1': ['206', '226', '245',' 265', '283'],
                   'x2': ['214', '234', '253', '272', '291']})

print(df)
df['x2'] = df['x2'].shift(1)
print(df)

相关问题 更多 >