我有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'] ]
感谢您的时间和方向!
答案 0 :(得分:2)
使用Series
创建的表单e_ref
或map
使用join
,但current
中e_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