Панды, объединяя два кадра данных в нескольких столбцах и умножая результат - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть фрейм данных, df1, который выглядит примерно так:

Name Event Factor1
John A     2
John B     3
Ken  A     1.5
....

и дополнительный фрейм данных, df2, например:

Name Event Factor2
John A     1.2
John B     .5
Ken  A     2

Я хотел бы объединить обакадры данных в двух столбцах «Имя» и «Событие», в которых полученные столбцы с коэффициентом 1 и 2 умножаются друг на друга.

Name Event FactorResult
John A     2.4
John B     1.5
Ken  A     3

Каков наилучший способ сделать это?Я не уверен, как соединить их в двух столбцах.Я знаю, что могу объединить и затем умножить два столбца, но мне интересно, есть ли лучший способ, чем сначала объединить их, а затем умножить и отбросить ненужные столбцы?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019
df  = pd.merge(left=df1, right=df2, on=['Name','Event'], how='inner']
df['FactorResult'] = df['Factor1'] * df['Factor2']
df = df[['Name', 'Event', 'FactorResult']]
0 голосов
/ 12 февраля 2019

Если ваши фреймы данных имеют одинаковую метку, объединять не нужно,

(df1.set_index(['Name', 'Event'])['Factor1'] * df2.set_index(['Name', 'Event'])['Factor2']).reset_index(name = 'FactorResult')

    Name    Event   FactorResult
0   John    A       2.4
1   John    B       1.5
2   Ken     A       3.0
0 голосов
/ 12 февраля 2019

Вы можете объединить , и они умножатся:

merged = df1.merge(df2, on=['Name', 'Event'])
merged['ResultFactor'] = merged.Factor1 * merged.Factor2
result = merged.drop(['Factor1', 'Factor2'], axis=1)

print(result)

Выход

   Name Event  ResultFactor
0  John     A           2.4
1  John     B           1.5
2   Ken     A           3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...