Панды - объединить столбцы, содержащие несколько нулевых значений - PullRequest
0 голосов
/ 31 октября 2018

У меня есть 2 фрейма данных - города и стадионы. Я хочу объединить их

cities
     Name   Stadium
0     c1      a
1     c2     NaN
2     c3     NaN
3     c4      b

stadiums
      Name     Capacity Type Col4 Col5
0       a        1       1    1     4
1       b        3       2    2     5
2       c        3       1    1     6

Output:
     Name   Stadium Capacity Type
0     c1      a       1       1
1     c2     NaN     NaN     NaN
2     c3     NaN     NaN     NaN
3     c4      b       3       2

Когда я объединяю их с одним из следующих операторов, я получаю дополнительные строки:

cities = pd.merge(cities,stadiums[['Name','Capacity','Type']],left_on='Stadium',right_on='name',how='left')

cities = pd.merge(cities,stadiums[['Name','Capacity','Type']],left_on='Stadium',right_on='name',how='outer')

Как объединить эти кадры данных?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

outer до left

cities = pd.merge(cities,stadiums[['Name','Capacity','Type']],left_on='Stadium',right_on='Name',how='left')
cities
Out[157]: 
  Name_x Stadium Name_y  Capacity  Type
0     c1       a      a       1.0   1.0
1     c2     NaN    NaN       NaN   NaN
2     c3     NaN    NaN       NaN   NaN
3     c4       b      b       3.0   2.0
0 голосов
/ 31 октября 2018

Ваша проблема в том, что вы выполняете внешнее объединение (how='outer'), что означает, что все строки из обоих информационных фреймов включены в выходные данные. Если вы просто хотите сопоставить строки в cities фрейме данных, попробуйте вместо этого how='left'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...