#python #python-3.x #pandas
Вопрос:
Я пытаюсь использовать pandas для анализа данных, используемых merge
для выполнения vlookup, два набора данных, как показано ниже,
data1 = acc_name tier content group gcode acc_ID abc 3 55 b 111 R-DDD def 4 45 c 222 X-TTT xyz 4 60 a 333 S-UUU abc 4 4 b 112 R-DDD xyz 4 6 a 331 X-TTT def 4 10 c 221 S-UUU
data2= Accountn type status xyz internal Active def external Active abc internal Inactive
код, который я использовал, таков
data1 = pd.read_csv('data1.csv') data2 = pd.read_csv('data2.csv') data1.rename(columns={'acc_name':'Accountn'},inplace = True) final = pd.merge(data1,data2[['Accountn','status']],on=['Accountn'],how='left')
Результат, который я получаю, таков:
final = Accountn tier content group gcode acc_ID status abc 3 55 b 111 R-DDD Inactive abc 3 55 b 111 R-DDD Inactive abc 3 55 b 111 R-DDD Inactive def 4 45 c 222 X-TTT Active def 4 45 c 222 X-TTT Active def 4 45 c 222 X-TTT Active xyz 4 60 a 333 S-UUU Active xyz 4 60 a 333 S-UUU Active xyz 4 60 a 333 S-UUU Active abc 4 4 b 112 R-DDD Inactive abc 4 4 b 112 R-DDD Inactive abc 4 4 b 112 R-DDD Inactive xyz 4 6 a 331 X-TTT Active xyz 4 6 a 331 X-TTT Active xyz 4 6 a 331 X-TTT Active def 4 10 c 221 S-UUU Active def 4 10 c 221 S-UUU Active def 4 10 c 221 S-UUU Active
O/P, который я хочу, это,
Accountn tier content group gcode acc_ID status abc 3 55 b 111 R-DDD Inactive def 4 45 c 222 X-TTT Active xyz 4 60 a 333 S-UUU Active abc 4 4 b 112 R-DDD Inactive xyz 4 6 a 331 X-TTT Active def 4 10 c 221 S-UUU Active
Я не знаю, что не так в моем коде
Комментарии:
1. Когда я запускаю ваш код, я получаю ожидаемый результат — никаких дубликатов.
Ответ №1:
Удалите дубликаты в df2
столбце по для объединения здесь Accountn
, чтобы в выводе не было дубликатов:
final = pd.merge(data1,data2[['Accountn','status']].drop_duplicates('Accountn'), on=['Accountn'], how='left')
Комментарии:
1. Спасибо, это работает, но почему так происходит, что создаются дубликаты записей?
2. @Kimberly_Jennifer — потому что тогда создается
cross join
, потому что объединенные дублированные значения в обоих кадрах данных вAccountn