Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas系列替换值忽略大小写,但仅当完全匹配时_Pandas_String_Dataframe_Replace - Fatal编程技术网

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'])