我想要合并两个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
列,但只是想知道是否有更好的方法。
答案 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
我希望这会有所帮助。