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)
。我添加它也是为了回答这个问题。