熊猫:简单的'加入'不起作用?

pandas

7139 观看

2回复

117 作者的声誉

我想我不是白痴,但也许我错了。任何人都可以向我解释为什么这不起作用?我可以使用'merge'来达到预期的效果。但我最终需要加入多个,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
作者: Phil 的来源 发布者: 2012 年 4 月 11 日

回应 (2)


16

52943 作者的声誉

决定

尝试使用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参数对列进行索引,因此称为“遗留”标记)。

作者: Wes McKinney 发布者: 11.04.2012 10:06

0

1 作者的声誉

我可以确认,Pandas join方法有问题。在我的情况下,两个键都是长字符串(18个字符),结果就好像pandas只匹配前几个字符。合并功能正常。请不要使用join函数,它应该从可用的方法中删除,否则可能会搞砸了很多时间。

作者: Donatas Svilpa 发布者: 16.11.2018 08:51
32x32