#python #pandas
#питон #панды
Вопрос:
У меня есть два кадра данных , и я хочу сопоставить столбец от df2
до df1
, но у меня нет одного уникального столбца для использования в качестве индекса, поэтому я делаю следующее:
df1['completion_time']=df1[['participant','Movement_type']].merge(df2,how='left').completion_time
но конечный результат не совпадает с исходным кадром данных, что-то не так
df1
participant vis total_time Movement_type 1194 8 24.747 A 1194 4 22.151 B 1190 8 28.853 A 1190 4 137.254 B 1197 8 21.244 A
df2
participant question completion_time Movement_type 1194 40 11.0 A 1194 34 0.0 C 1194 52 45.0 B 1190 52 30.0 B 1190 40 20.0 A 1197 34 0.0 C
и я стремлюсь достичь этого: df3
participant vis total_time Movement_type completion_time 1194 8 24.747 A 11.0 1194 4 22.151 B 45.0 1190 8 28.853 A 20.0 1190 4 137.254 B 30.0
Ответ №1:
Просто используй df3 = pd.merge(df1, df2)
. Это приводит к правильному df3 для меня:
participant vis total_time Movement_type question completion_time 0 1194 8 24.747 A 40 11.0 1 1194 4 22.151 B 52 45.0 2 1190 8 28.853 A 40 20.0 3 1190 4 137.254 B 52 30.0
Если вы хотите избавиться от ненужного столбца, просто объедините подмножество df2, в котором вы сохраняете нужные столбцы и столбцы, в которых вы объединяетесь.
pd.merge(df1, df2.drop(columns='question'))
participant vis total_time Movement_type completion_time 0 1194 8 24.747 A 11.0 1 1194 4 22.151 B 45.0 2 1190 8 28.853 A 20.0 3 1190 4 137.254 B 30.0
Комментарии:
1. Я получаю пустой фрейм данных, я думаю, нам нужно указать индекс, если мы хотим объединить, верно?
2. Проверьте свой код на наличие ошибок. Какую версию pandas вы используете?
3. моя текущая версия pandas: 1.3.0