Когда я пытаюсь объединить два набора разностных данных на основе значений столбца, я замечаю, что значения столбцов из двух листов будут правильно совпадать, если используются одинаковые заглавные буквы. Однако Python не сможет идентифицировать соответствующее значение для df1 из df2, если используются разные заглавные буквы, даже если строка такая же.
Есть ли способ сделать это без изменения содержимого наборов данных?
merged_df = pd.merge(df1, df2, on=['column1'], how = 'left')
merged_df.drop_duplicates(keep='first', inplace=True)
merged_df.to_csv('report.csv', index=False)
Вы можете использовать строковый метод str.lower(), если хотите эффективно игнорировать использование заглавных букв в своих сравнениях. Но да, 'ThisString'!='thisstring'
Вы можете использовать left_on и right_on
Есть ли способ реализовать это в операторе слияния?






Нормализуйте ваши строки до вашего слияния через pd.Series.str.lower. Если по какой-то причине вы не хотите изменять исходные фреймы данных, вы можете использовать pd.DataFrame.assign:
merged_df = pd.merge(df1.assign(column1=df1['column1'].str.lower()),
df2.assign(column1=df2['column1'].str.lower()),
on='column1', how='left')
Простой для понимания подход,
df1['column1']=df1['column1'].str.lower()
df2['column2']=df2['column2'].str.lower()
Затем продолжайте писать свой код.
Я пойду этим маршрутом, спасибо. Мне просто было интересно, есть ли способ сделать это без изменения содержимого наборов данных.
@ Ashutosh .. df2['column1']=df2['column1'].str.lower(), просто измените это второе появление ради или для разницы,
Если используются разные заглавные буквы, строки нет одинаковы. Почему бы вам просто не нормализовать регистр