两个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是加入两个数据帧的方法
答案 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