Pandas合并如何避免未命名的列

Che*_*eng 6 python pandas

我想要合并两个DataFrame:

DataFrame A columns: index, userid, locale  (2000 rows)  
DataFrame B columns: index, userid, age     (300 rows)
Run Code Online (Sandbox Code Playgroud)

当我执行以下操作时:

pd.merge(A, B, on='userid', how='outer')
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下列的DataFrame:

index,Unnamed:0,userid,locale,age

index列和Unnamed:0列是相同的.我想该Unnamed:0列是DataFrame B的索引列.

我的问题是:Unnamed在合并两个DF时有没有办法避免这个列?

之后我可以删除Unnamed专栏,但只是想知道是否有更好的方法来做到这一点.

Tha*_*nos 6

总之,您正在做的就是将索引保存到文件中,并且当您从文件中读回时,以前另存为的列将作为index常规列加载。

有几种方法可以解决此问题:

方法1

pandas.DataFrame将磁盘保存到磁盘时,请使用index=False以下命令:

df.to_csv(path, index=False)
Run Code Online (Sandbox Code Playgroud)

方法2

从文件读取时,您可以定义将用作索引的列,如下所示:

df = pd.read_csv(path, index_col='index')
Run Code Online (Sandbox Code Playgroud)

方法3

如果方法#2由于某种原因不适合您,则以后总是可以将列设置为用作索引,如下所示:

df.set_index('index', inplace=True)
Run Code Online (Sandbox Code Playgroud)

在这之后,您的数据声望应如下所示:

        userid    locale    age
index
    0    A1092     EN-US     31
    1    B9032     SV-SE     23
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助。


Max*_*axU 5

在将DataFrame保存到CSV文件(df.to_csv('...', index=False))时,或者如果您必须处理无法更改/编辑的CSV文件时,请不要编写索引,请使用usecols参数:

A = pd.read_csv('/path/to/fileA.csv', usecols=['userid','locale'])
Run Code Online (Sandbox Code Playgroud)

为了摆脱Unnamed:0专栏......