22

私は自分は馬鹿ではないと思いたいのですが、間違っているかもしれません。これが機能しない理由を誰かに説明できますか? 「マージ」を使用して、目的の結果を得ることができます。しかし、最終的には複数に参加する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
4

2 に答える 2

23

使ってみてください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 パラメータを使用して列のインデックスを作成していたため、「レガシー」指定になっています)。

于 2012-04-11T22:06:26.303 に答える