pandas: заполнить пустой столбец в фрейме данных значениями из нескольких фреймов данных на основе аналогичных значений в одном столбце - PullRequest
1 голос
/ 10 июля 2020

У меня есть большой фрейм данных с двумя столбцами, но с большим количеством строк, так что это просто пример:

df1 = {"text":["see you in five minutes.", "she is my friend.", "she goes to school in five minutes.","he is my friend.","that is right.","sky is blue.","sky is yellow."],
       "goal":[" "," "," "," "," "," "," "]}

и у меня также есть три других фрейма данных, которые имеют разные размеры, но все они имеют некоторые строк из текстового столбца в df1:

 df2= {"text":["see you in five minutes.", "he is my friend."],
       "second":["num","friend"]}

 df3 = {"text":["she goes to school in five minutes.","she is my friend.","that is right."],
       "third":["num","friend","correct"]}

 df4 = {"text":["sky is blue.","sky is yellow."],
       "fourth":["color","color"]}

то, что я хотел бы сделать, это объединить «второй», «третий» и «четвертый» столбцы в df1 таким образом, чтобы они заполняли пустые столбец "цель" в df1,

 desired output:
 df1 = {"text":["see you in five minutes.", "she is my friend.", "she goes to school in five minutes.","he is my friend.","that is right.","sky is blue.","sky is yellow."],
       "goal":["num","friend","num","friend","correct","color","color"]}

Я пытался несколько раз слить слева для каждого фрейма данных, но результат будет отображаться в другом столбце. Есть ли способ сделать это сразу и добавить их в столбец целей?

спасибо

1 Ответ

1 голос
/ 10 июля 2020

Создайте серию сопоставлений m, объединив фреймы данных df2, df3 и df4 с помощью pd.concat, затем используйте эту серию сопоставлений вместе с Series.map для сопоставления текстового столбца в df1:

m = pd.concat([df.set_index('text').iloc[:, 0] for df in (df2, df3, df4)])
df1['goal'] = df1['text'].map(m)

Результат:

# print(df1)
                                  text     goal
0             see you in five minutes.      num
1                    she is my friend.   friend
2  she goes to school in five minutes.      num 
3                     he is my friend.   friend
4                       that is right.  correct
5                         sky is blue.    color
6                       sky is yellow.    color
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...