熊猫:合并两个数据帧

时间:2014-07-24 13:35:30

标签: python pandas

两个pandas数据帧上MERGE操作的输出不会产生预期结果:

**dfmatrix**:
    …   young   label   filename
0   …   1       neg     cv005_29357
1   …   0       neg     cv006_17022
2   …   0       neg     cv007_4992
3   …   1       neg     cv008_29326
4   …   1       neg     cv009_29417

**dfscores**:
   filename  score
0  cv005_29357   -10
1  cv006_17022   5

dfnew = pandas.merge(dfmatrix, dfscores, on='filename', how='outer', left_index=False, right_index=False)

**dfnew**:
   …    young   label   filename    score_y
0  …    0       neg     cv005_29357 NaN
1  …    1       neg     cv006_17022 NaN
2  …    0       neg     cv007_4992  NaN
3  …    0       neg     cv008_29326 NaN
4  …    1       neg     cv009_29417 NaN

Excpected Output:

**dfnew**:
   …    young   label   filename    score_y
0  …    0       neg     cv005_29357 -10
1  …    1       neg     cv006_17022 5
2  …    0       neg     cv007_4992  NaN
3  …    0       neg     cv008_29326 NaN
4  …    1       neg     cv009_29417 NaN

我做错了什么?

更新:this post建议MERGE是加入两个数据帧的方法

1 个答案:

答案 0 :(得分:0)

问题出在文件级别:正在读取的filename文件的dfscores列中的条目有trailing whitespace,导致JOIN失败。承认,这对我来说不是一个光荣的时刻,但不过这些事情发生了,我认为值得发布答案,因为它可能会发生在其他经验不足的编码员身上。

自动化流程:

dfscores['filename'] = dfscores['filename'].map(lambda x: x.strip())

来源:Pandas DataFrame: remove unwanted parts from strings in a column