在Pandas DATA FRAME中移动列

puk*_*789 6 python ipython pandas

我已经将csv文件中的数据读入由超过25000行和15列组成的数据框中,我需要将所有行(包括最左边 - >索引)向右移动一列,这样我得到一个空索引并能够用整数填充它.但是,列的名称应保持在同一位置.所以,基本上我需要将除列名之外的所有内容移到右边一个位置.

在此输入图像描述

我试图重新索引它,但得到一个错误:

ValueError: cannot reindex from a duplicate axis
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Leb*_*Leb 10

在pandas中,您只能在右侧创建一列,除非您在两个数据帧之间进行连接.然后你可以重新安排,但你喜欢.

import pandas as pd

df = pd.read_csv('data.csv', header=None, names = ['A','B','C'])

print(df)

    A   B   C
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12

df['D'] = pd.np.nan # this creates an empty series
                    # and appends to the right

print(df)

    A   B   C   D
0   1   2   3 NaN
1   4   5   6 NaN
2   7   8   9 NaN
3  10  11  12 NaN

df = df[['D','A','B','C']] # rearrange as you like

print(df)

    D   A   B   C
0 NaN   1   2   3
1 NaN   4   5   6
2 NaN   7   8   9
3 NaN  10  11  12
Run Code Online (Sandbox Code Playgroud)


Fab*_*nna 5

我会首先添加一个新列:

df['new'] = df.index
Run Code Online (Sandbox Code Playgroud)

而不是在列表中使用数据框列的名称:

colnames = df.columns.tolist()
Run Code Online (Sandbox Code Playgroud)

然后您可以根据需要重新排列它们,例如更改顺序,以便您首先获得最后一个“新”列,并将剩余的一个位置向右移动:

colnames = colnames[-1:] + colnames[:-1]
Run Code Online (Sandbox Code Playgroud)

并重新分配:

df = df[colnames]
Run Code Online (Sandbox Code Playgroud)