#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 имел дубликаты.