Pandas系列替换值忽略大小写,但仅当完全匹配时
正如标题所说,我正在寻找一个完美的解决方案来替换一系列忽略情况下的精确字符串Pandas系列替换值忽略大小写,但仅当完全匹配时,pandas,string,dataframe,replace,Pandas,String,Dataframe,Replace,正如标题所说,我正在寻找一个完美的解决方案来替换一系列忽略情况下的精确字符串 ls = {'CAT':'abc','DOG' : 'def','POT':'ety'} d = pd.DataFrame({'Data': ['cat','dog','pot','Truncate','HotDog','ShuPot'],'Result':['abc','def','ety','Truncate','HotDog','ShuPot']}) d 在上面的代码中,ref保留key-value对,其中k
ls = {'CAT':'abc','DOG' : 'def','POT':'ety'}
d = pd.DataFrame({'Data': ['cat','dog','pot','Truncate','HotDog','ShuPot'],'Result':['abc','def','ety','Truncate','HotDog','ShuPot']})
d
在上面的代码中,ref保留key-value对,其中key是dataframe列中的现有值,value是要替换的值
这种情况的问题是,传递字典的服务总是以大写形式保存字典键,而dataframe的值可能以小写形式存在
预期输出存储在“结果”列中
我尝试包括re.ignore=True,它会更改最后2个值。
以下代码,但该代码未按预期工作。它还将值从上一次迭代转换为大写
for k,v in ls.items():
print (k,v)
d['Data'] = d['Data'].astype(str).str.upper().replace({k:v})
print (d)
我非常感谢你的帮助 从给定字典创建映射序列,然后将映射序列的索引转换为小写,然后使用将数据列中的值映射到映射中的值,然后使用填充映射序列中缺少的值:
mappings = pd.Series(ls)
mappings.index = mappings.index.str.lower()
d['Result'] = d['Data'].str.lower().map(mappings).fillna(d['Data'])
从给定字典创建映射序列,然后将映射序列的索引转换为小写,然后使用将数据列中的值映射到映射中的值,然后使用填充映射序列中缺少的值:
mappings = pd.Series(ls)
mappings.index = mappings.index.str.lower()
d['Result'] = d['Data'].str.lower().map(mappings).fillna(d['Data'])