Python替换For循环中列中的字符串

Python替换For循环中列中的字符串,python,pandas,for-loop,Python,Pandas,For Loop,我正在尝试关联文件列表中的所有文件 文件列表: result=pd.concat([pd.read\u csv(f).在文件列表中为f设置索引(['a','b','c'))) 挑战在于,我想在设置索引之前用列[b]中的任何内容替换字符串'xyz'。如何在同一行中实现这一点?我认为您需要用嵌套的dict替换: dfs=[pd.read_csv(f).replace({'b':{'xyz':''}}).set_index(['a', 'b', 'c']) for f in file_list] re

我正在尝试关联文件列表中的所有文件
文件列表

result=pd.concat([pd.read\u csv(f).在文件列表中为f设置索引(['a','b','c')))


挑战在于,我想在
设置索引之前用
列[b]
中的任何内容替换字符串
'xyz'
。如何在同一行中实现这一点?

我认为您需要用嵌套的
dict
替换

dfs=[pd.read_csv(f).replace({'b':{'xyz':''}}).set_index(['a', 'b', 'c']) for f in file_list]
result = pd.concat(dfs)
或者如果
xyz
字符串不在列
a
中,并且
c
可以创建
MultiIndex
,然后替换所有
xyz

dfs = [pd.read_csv(f, index_col=['a','b','c']).rename({'xyz':''}) for f in file_list]
result = pd.concat(dfs)
最后,如果没有任何内容是
NaN
只使用
{'xyz':np.NaN}
而不是
{'xyz':''}

按注释编辑:

对于替换为
regex

dfs= [pd.read_csv(f).replace({'b':{'xyz*':''}}, regex=True).set_index(['a', 'b', 'c']) for f in file_list]
result = pd.concat(dfs)

为了添加,我使用了正则表达式
dfs=[pd.read_csv(f).replace({'b':{'xyz*':''}},regex=True)
。我添加它也是为了回答这个问题。