将多列数据移动到左侧Pandas Dataframe [重复]

问题描述 投票:2回答:2

这个问题在这里已有答案:

我想将整列数据移到左边。只有数据应该向左移动1次,列应该是固定的。你能告诉我怎么办?

初始数据是:

              A1   A2   A3   A4   A5
     #0001    421  000  000  777  888
     #0002    382  403  430  320  055
     #0003    441  304  403  403  403
     #0004    430  403  206  N/A  312
     #0005    N/A  394  493  N/A  403

欲望数据是:

              A1   A2   A3   A4   A5
     #0001    000  000  777  888  N/A
     #0002    403  430  320  055  N/A
     #0003    304  403  403  403  N/A
     #0004    403  206  N/A  312  N/A
     #0005    394  493  N/A  403  N/A
python pandas
2个回答
1
投票

使用shift双转置:

df = df.T.shift(-1,axis=0).T

print(df)

          A1     A2     A3     A4  A5
#0001    0.0    0.0  777.0  888.0 NaN
#0002  403.0  430.0  320.0   55.0 NaN
#0003  304.0  403.0  403.0  403.0 NaN
#0004  403.0  206.0    NaN  312.0 NaN
#0005  394.0  493.0    NaN  403.0 NaN

实际上df.shift(-1,axis=1)应该工作,但代码中有错误:

print(df.shift(-1,axis=1))
          A1     A2     A3  A4  A5
#0001  777.0    0.0  888.0 NaN NaN
#0002  320.0  430.0   55.0 NaN NaN
#0003  403.0  403.0  403.0 NaN NaN
#0004    NaN  206.0  312.0 NaN NaN
#0005    NaN  493.0  403.0 NaN NaN

1
投票

试试这个简单的循环:

for i in range(len(df.columns)-1):  # loop till last but one column
    df.iloc[:,i] = df.iloc[:,i+1]   # each column gets values of next column

df[i+1] = np.nan                    # for last column;

输出:

        A1   A2     A3   A4  A5
#0001    0    0  777.0  888 NaN
#0002  403  430  320.0   55 NaN
#0003  304  403  403.0  403 NaN
#0004  403  206    NaN  312 NaN
#0005  394  493    NaN  403 NaN
© www.soinside.com 2019 - 2024. All rights reserved.