У меня есть 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
Мне нужно добавить столбец "проводник" в систему DataFrame из столбцов "wire_gauge" e_ref DataFrame, просмотрев значение прерывания в текущей серии e_ref.
поэтому выход будет:
breakers wire_gauge
0 30 10
1 20 12
2 30 10
3 15 14
4 30 10
Я продолжаю смешивать несколько ответов с другого сообщения и в настоящее время не имеет рабочего решения pandas. Я могу заставить эту работу работать с петлями 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'] ]
Спасибо за ваше время и направление!
Используйте map
с помощью Series
созданной формы e_ref
или 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