不区分大小写的pandas dataframe.merge

EMC*_*EMC 5 python csv pandas

我正在努力用最简单的方法在pandas中进行不区分大小写的合并.有没有办法在合并时做到这一点?我是否需要使用(?i)或带有ignorecase的正则表达式?在我的下面的代码片段中,我加入了一些国家,其中一个文件中可能是"美国"而另一个文件中的"美国",我只想将这个案例排除在外.谢谢!

import pandas as pd
import csv
import sys

env_path = sys.argv[1]
map_path = sys.argv[2]


df_address = pd.read_csv(env_path + "\\address.csv")
df_CountryMapping = pd.read_csv(map_path + "\CountryMapping.csv")

df_merged = df_address.merge(df_CountryMapping, left_on="Country", right_on="NAME", how="left")

....
Run Code Online (Sandbox Code Playgroud)

Sha*_*wal 11

小写将用于合并的两列中的值,然后在小写列上合并

df_address['country_lower'] = df_address['Country'].str.lower()
df_CountryMapping['name_lower'] = df_CountryMapping['NAME'].str.lower()
df_merged = df_address.merge(df_CountryMapping, left_on="country_lower", right_on="name_lower", how="left")
Run Code Online (Sandbox Code Playgroud)


小智 10

df_merged = pd.merge(df_address, df_CountryMapping, left_on=df_address["Country"].str.lower(), right_on=df_CountryMapping["NAME"].str.lower(), how="left")
Run Code Online (Sandbox Code Playgroud)

  • 向代码示例添加一些解释是一个很好的做法。 (7认同)
  • 不幸的是,这没有解释,因为这是最好的答案。此方法不会修改原始数据帧,它仅将小写字母应用于合并方法的输入。做得太好了。 (4认同)
  • @AbuShoeb您可以使用 applymap 降低两列 `df1[['col1','col2']].applymap(lambda x: str(x).lower())` (4认同)