我喜欢认为我不是一个白痴,但也许我错了。谁能向我解释为什么这不起作用?我可以使用"合并"获得所需的结果。但我最终需要加入多个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 个字符),结果好像熊猫只匹配前几个字符。合并功能工作正常。请不要使用加入功能,它应该真正从可用方法中删除,否则可能会把它搞砸。