将多列数据移到左侧的Pandas Dataframe

时间:2018-11-15 04:41:43

标签: python pandas

我想将整列数据移到左侧。 仅应将数据向左移动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

2 个答案:

答案 0 :(得分: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 :(得分: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