Как функция concat pandas выполняет соединения столбцов без указания общего ключа? - PullRequest
0 голосов
/ 26 октября 2018

Приветствую моих дорогих собратьев Pythoners!

Сегодня, когда я проходил курс Python в лагере данных, простое объединение данных с pd.concat () действительно встало передо мной.Я не мог понять логику соединения.Мне нужна ваша помощь!

Рассмотрим следующий случай, который является упрощенной версией, и мы хотим использовать pd.concat () для объединения этих двух таблиц:

Таблица A:

Date        Day        status_country        counts
1/5/2015    289        Cases_Guinea          2776.0
1/4/2015    288        Cases_Guinea          2775.0
1/3/2015    287        Cases_Guinea          2769.0
1/2/2015    286        Cases_Guinea             NaN
12/31/2015  284        Cases_Guinea          2730.0

Таблица B:

status    country
 Cases     Guinea
 Cases     Guinea
 Cases     Guinea
 Cases     Guinea
 Cases     Guinea

Код Python:

pd.concat([ebola_melt, status_country], axis = 1)

Возвращаемые данные:

Date        Day        status_country        counts    status    country
1/5/2015    289        Cases_Guinea          2776.0     Cases     Guinea
1/4/2015    288        Cases_Guinea          2775.0     Cases     Guinea
1/3/2015    287        Cases_Guinea          2769.0     Cases     Guinea
1/2/2015    286        Cases_Guinea             NaN     Cases     Guinea
12/31/2015  284        Cases_Guinea          2730.0     Cases     Guinea

Вопрос:

Очевидно, что между этими двумя таблицами нет общего индекса, если только вы не проанализируете столбец «status_country» в таблице A, а затем сопоставите его с таблицей B, но я не уверен, что эта функция разумнадостаточно, чтобы сделать это.

Какая логика сопоставления стоит за этой функцией?

Производится ли частичное сопоставление или анализ, а затем сопоставление?

Как бы я это понял?

1 Ответ

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

pd.concat основано на index

Например, у вас есть

df1=pd.DataFrame({'A':[1,2,3,4]})
df2=pd.DataFrame({'A':[1,2,3,4]},index=[2,3,4,5])

Когда вы делаете concat, вы делаете join по индексу или merge по индексу

pd.concat([df1,df2],axis=1)
Out[303]: 
     A    A
0  1.0  NaN
1  2.0  NaN
2  3.0  1.0
3  4.0  2.0
4  NaN  3.0
5  NaN  4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...