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

时间:2016-12-11 15:08:44

标签: python pandas

我想要合并两个DataFrame:

node_modules/react-scripts/node_modules/jest-matchers/build/matchers.js

当我执行以下操作时:

DataFrame A columns: index, userid, locale  (2000 rows)  
DataFrame B columns: index, userid, age     (300 rows)

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

index,Unnamed:0,userid,locale,age

pd.merge(A, B, on='userid', how='outer') 列和index列完全相同。我想Unnamed:0列是DataFrame B的索引列。

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

之后我可以删除Unnamed列,但只是想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:5)

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

A = pd.read_csv('/path/to/fileA.csv', usecols=['userid','locale'])

为了摆脱Unnamed:0列......

答案 1 :(得分:5)

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

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

方法1

pandas.DataFrame保存到磁盘时,请使用index=False,如下所示:

df.to_csv(path, index=False)

方法2

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

df = pd.read_csv(path, index_col='index')

方法3

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

df.set_index('index', inplace=True)

在此之后,您的数据格式应如下所示:

        userid    locale    age
index
    0    A1092     EN-US     31
    1    B9032     SV-SE     23

我希望这会有所帮助。