Как создать логические столбцы на основе значений столбцов в другом кадре данных - PullRequest
0 голосов
/ 24 сентября 2018

Допустим, у меня есть две панды DataFrames, df1 и df2, одна из которых содержит имена и возраст людей, а другая подробно описывает, что они изучают.Какой эффективный способ объединить эти два, чтобы у меня были логические поля того, что изучает каждый человек?

например, учитывая следующее

# df1
name  | age
------|----
John  | 24
Kelly | 49
Gemma | 18
Bob   | 29

# df2
name  | studies
------|----------
John  | education
John  | science
Kelly | science
Bob   | law
Bob   | commerce

Как я могу создать следующий кадр данных сбулевы значения для каждой области исследования?

name  | age | education | science | law   | commerce |
------|-----|-----------|---------|-------|----------|
John  | 24  | True      | True    | False | False    |
Kelly | 49  | False     | True    | False | False    |
Gemma | 18  | False     | False   | False | False    |
Bob   | 29  | False     | False   | True  | True     |

1 Ответ

0 голосов
/ 24 сентября 2018

Используйте get_dummies с max, затем join и заменяйте пропущенные значения только для столбцов из df22:

s = df2.set_index('name')['studies']
df22 = pd.get_dummies(s, prefix_sep='', prefix='', dtype=bool).max(level=0)
df = df1.join(df22, on='name').fillna(dict.fromkeys(df22.columns, False))
print (df)
    name  age  commerce  education    law  science
0   John   24     False       True  False     True
1  Kelly   49     False      False  False     True
2  Gemma   18     False      False  False    False
3    Bob   29      True      False   True    False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...