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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将多列数据移动到左侧Pandas Dataframe [重复]相关的知识,希望对你有一定的参考价值。

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

我想将整列数据移到左边。只有数据应该向左移动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
答案

使用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
另一答案

试试这个简单的循环:

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

以上是关于将多列数据移动到左侧Pandas Dataframe [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas一些基本操作(DataFram和Series)_1

将json行数据划分为pandas数据框的多列[重复]

pandas read_excel,将单个标题读取到多列

Datafram 实现作为正文发送邮件

Python Pandas——在多列上融化、旋转、转置

pandas一些基本操作(DataFram和Series)_3