熊猫:简单'join'不起作用?



我喜欢认为我不是一个白痴,但也许我错了。谁能向我解释为什么这不起作用?我可以使用"合并"获得所需的结果。但我最终需要加入多个pandas DataFrames所以我需要让这种方法工作。

In [2]: left = pandas.DataFrame({'ST_NAME': ['Oregon', 'Nebraska'], 'value': [4.685, 2.491]})
In [3]: right = pandas.DataFrame({'ST_NAME': ['Oregon', 'Nebraska'], 'value2': [6.218, 0.001]})
In [4]: left.join(right, on='ST_NAME', lsuffix='_left', rsuffix='_right')
Out[4]: 
  ST_NAME_left  value ST_NAME_right  value2
0       Oregon  4.685           NaN     NaN
1     Nebraska  2.491           NaN     NaN

尝试使用 merge

In [14]: right
Out[14]: 
    ST_NAME  value2
0    Oregon   6.218
1  Nebraska   0.001
In [15]: merge(left, right)
Out[15]: 
    ST_NAME  value  value2
0  Nebraska  2.491   0.001
1    Oregon  4.685   6.218
In [18]: merge(left, right, on='ST_NAME', sort=False)
Out[18]: 
    ST_NAME  value  value2
0    Oregon  4.685   6.218
1  Nebraska  2.491   0.001

DataFrame.join 有点传统方法,显然不做列对列的连接(最初它使用 on 参数对列进行索引,因此指定为"旧版")。

我可以确认,熊猫加入方法有问题。在我的情况下,两个键都是长字符串(18 个字符),结果好像熊猫只匹配前几个字符。合并功能工作正常。请不要使用加入功能,它应该真正从可用方法中删除,否则可能会把它搞砸。

最新更新