如果值在另一列中,则来自另一个DataFrame的pandas列?

时间:2017-05-15 12:25:26

标签: python pandas dataframe

我有pd.DataFrame列出线规及其相应的电流:

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

另一个DataFrame列出了系统中的断路器:

system =

    breakers
0         30
1         20
2         30
3         15
4         30

我需要添加一个"线规"从" wire_gauge"到系统DataFrame的列通过在e_ref的当前系列中查找断路器值来查看e_ref DataFrame的列。

所以输出将是:

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

我一直在混淆其他帖子的几个答案,目前还没有工作的熊猫解决方案。我可以使用python循环工作,但我觉得这里有一个熊猫一个班轮...

以下是我正在处理的解决方案类型:

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 个答案:

答案 0 :(得分:2)

使用Series创建的表单e_refmap使用join,但currente_ref列中的必要值必须是唯一的:

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