2017-05-15 17 views
1

私はpd.DataFrameワイヤゲージとそれに対応する電流をリストアップしている:私は=値が別の列にある場合、別のDataFrameのpandas列?

breakers 
0   30 
1   20 
2   30 
3   15 
4   30 

システム:

E_REF =

wire_gauge current 
0   14  15 
1   12  20 
2   10  30 
3   8  50 
4   6  60 
5   4  85 
6   3  100 
7   2  115 

別のデータフレームは、システム内のブレーカーを一覧表示しますe_ref DataFrameの "wire_gauge"列から "wire gauge"列をシステムDataFrameに追加する必要がありますe_refの現在のシリーズにおけるker値。

ので、出力は次のようになります。

breakers wire_gauge 
0   30 10 
1   20 12 
2   30 10 
3   15 14 
4   30 10 

私は他のポストから混乱し、いくつかの答えを維持し、現在作業パンダソリューションを持っていません。

df.ix[df.breakers.isin(e_ref['current']), 'wire_gauge'] = e_ref['wire_gauge'] 

df['wire_gauge']=e_ref.loc[e_ref['current'] == df['breakers'] ] 
:パンダ1ライナーがここにありますように以下

は、私が働いているソリューションの種類があります...私はPythonのループを使用してこの作業を取得することができますが、私は感じます

あなたの時間と方向性に感謝します! Seriesによって

答えて

1

使用mapが作成したフォームe_refまたはjoinが、e_refcurrent列に必要な値がユニークである必要がありますされています

print (e_ref['current'].is_unique) 
True 

s = e_ref.set_index('current')['wire_gauge'] 
system['wire_gauge'] = system['breakers'].map(s) 
print (system) 
    breakers wire_gauge 
0  30   10 
1  20   12 
2  30   10 
3  15   14 
4  30   10 

オルタナティブ:

df = system.join(e_ref.set_index('current'), on='breakers') 
print (df) 
    breakers wire_gauge 
0  30   10 
1  20   12 
2  30   10 
3  15   14 
4  30   10 
+0

私はここのオプションを感謝しています。ブレーカの値を10に変更すると、両方とも "ナノ"に戻ります(他のすべての電流で機能するようです)。それ以外の場合は、これは良いようです。私が受け入れる前にもっと掘り下げていくつもりです。 – twinturbotom

+0

私は別のdtypesで問題があると思う、[これをチェック](http://stackoverflow.com/a/44001535/2901002) – jezrael

関連する問題