Объединение фреймов данных и дублирование похожих значений идентификаторов

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Итак, у меня есть два фрейма данных разных размеров, которые я пытаюсь объединить, дублируя один из элементов более короткого списка, чтобы соответствовать форме большего фрейма данных.

  • Один фрейм данных содержит столбец имен файлов, за которым следуют столбцы аннотаций (0 для нет, 1 для да). Этот фрейм данных может содержать повторяющиеся значения имени пользователя.

  • Другой фрейм данных содержит столбец имен файлов и столбец текстовых строк.

 print(df1)

    Filename       Animal      Place      Food

0   user1.txt        1           0          0
1   user1.txt        0           0          1
2   user2.txt        0           1          0
3   user2.txt        0           0          1
4   user3.txt        1           0          0


print(df2)

    Filename                        Text  

0   user1.txt        "These cows make for a great steak"  
1   user2.txt        "Italy has the best pasta" 
2   user3.txt        "Sharks are my favorite animal"
  

Что я хотел бы сделать, так это объединить 2 фрейма данных в filename, но если df1 имеет повторяющиеся значения «Filename», сохраните соответствующее текстовое значение для этого «Filename». Так, например, окончательный фрейм данных будет выглядеть следующим образом:

     Filename       Animal      Place      Food     

0   user1.txt        1           0          0        "These cows make for a great steak" 
1   user1.txt        0           0          1        "These cows make for a great steak"
2   user2.txt        0           1          0        "Italy has the best pasta"
3   user2.txt        0           0          1        "Italy has the best pasta"
4   user3.txt        1           0          0        "Sharks are my favorite animal"
  

Если у кого-нибудь есть какие-либо идеи, я был бы признателен за помощь.

Спасибо!

Ответ №1:

Использовать:

 df3 = pd.merge(A, B, left_on='Filename', right_on='Filename')
  

Теперь, df3 это ваш целевой фрейм данных.

Комментарии:

1. Да, вы были правы. Спасибо за помощь, я ценю это.