Объединение двух информационных кадров с одним и тем же столбцом - PullRequest
2 голосов
/ 18 апреля 2020

У меня есть два кадра данных.

  1. feelingsDF со столбцами 'feeling', 'count', 'code'.
  2. countryDF со столбцами 'feeling', 'countryCount'.

Как создать еще один кадр данных, который берет столбцы из countryDF и объединяет их со столбцом code в feelingsDF?

Полагаю, вам нужно каким-то образом использовать один и тот же столбец feeling в feelingsDF, чтобы объединить их и сопоставить, чтобы убедиться, что одинаковые code соответствуют тому же чувству.

Я хочу три столбца должны отображаться как:

[feeling][countryCount][code]

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Вы можете объединить два кадра данных, используя pd.merge. Предполагая, что вы хотите присоединиться к столбцу feel , вы можете использовать:

df= pd.merge(feelingsDF, countryDF, on='feeling', how='left')

См. документацию для pd.merge, чтобы понять, как использовать on и как параметры.

feelingsDF = pd.DataFrame([{'feeling':1,'count':10,'code':'X'}, 
{'feeling':2,'count':5,'code':'Y'},{'feeling':3,'count':1,'code':'Z'}])

   feeling  count code
0        1     10    X
1        2      5    Y
2        3      1    Z

countryDF = pd.DataFrame([{'feeling':1,'country':'US'},{'feeling':2,'country':'UK'},{'feeling':3,'country':'DE'}])

   feeling country
0        1      US
1        2      UK
2        3      DE

df= pd.merge(feelingsDF, countryDF, on='feeling', how='left')

   feeling  count code country
0        1     10    X      US
1        2      5    Y      UK
2        3      1    Z      DE

0 голосов
/ 18 апреля 2020

Вы объединяете два кадра данных по столбцу «чувство». Предполагая, что вам нужны только записи в «чувствах», которые являются общими для обоих кадров данных, вы захотите выполнить внутреннее объединение.

Вот аналогичный пример с двумя dfs:

x = pd.DataFrame({'feeling': ['happy', 'sad', 'angry', 'upset', 'wow'], 'col1': [1,2,3,4,5]})
y = pd.DataFrame({'feeling': ['okay', 'happy', 'sad', 'not', 'wow'], 'col2': [20,23,44,10,15]})
x.merge(y,how='inner', on='feeling')

Выходные данные:

  feeling  col1  col2
0   happy     1    23
1     sad     2    44
2     wow     5    15

Чтобы удалить столбец «count», выберите другие столбцы feelDF, а затем выполните сортировку по столбцу «countryCount». Обратите внимание, что это приведет к тому, что ваш индекс выйдет из строя, но вы можете затем переиндексировать комбинированный_df.

combined_df = feelingsDF[['feeling', 'code']].merge(countryDF, how='inner', on='feeling').sort_values('countryCount')
# To reset the index after sorting:
combined_df = combined_df.reset_index(drop=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...