Создайте столбец с соответствующими значениями из другого фрейма данных с помощью pandas.Фрейм данных.слияние

#python #sql #pandas #dataframe #merge

Вопрос:

ИЗМЕНИТЬ: Я изменил data1.code1, чтобы иметь повторяющееся значение … исходное сообщение не имело повторяющегося значения

Я хотел бы создать столбец в df, используя панд.Фрейм данных.слияние . Я хочу, чтобы в df2 был столбец «name2», соответствующий df1.name1 . Например, 103 соответствует E в df1, поэтому я хочу, чтобы в df2.name2 рядом с двумя 103 было E.

 data1 = {'code1':[101, 101, 103, 104, 105, 106], 
        'name1':['A', 'A', 'E', 'B', 'B', 'C']}
  
# Create DataFrame 
df1 = pd.DataFrame(data1)

print(df1)


data2 = {'code2':[101, 101, 102, 103, 103, 106]}
  
# Create DataFrame 
df2 = pd.DataFrame(data2)

print(df2)


data3 = {'code3':[101, 102, 102, 103, 103, 106], 
         'name3':['A', 'A', 'A', 'E', 'E', 'C']}

what_i_want_df2_to_be = pd.DataFrame(data3)

print(what_i_want_df2_to_be)
 

Ответ №1:

Попробуйте с

 df2['name3'] = df2.code2.map(df1.set_index('code1')['name1'])
df2
Out[411]: 
   code2 name3
0    101     A
1    102     A
2    102     A
3    103     E
4    103     E
5    106     C
 

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

1. код, который вы предоставили, работал над моим первоначальным вопросом, но я не очень хорошо справился с заданием, потому что он не работал с моими фактическими данными. мой фактический набор данных содержит повторяющиеся значения индекса, поэтому код не работал. Я скорректировал вопрос так, чтобы data1.code1 имел дубликаты.