我正在尝试连接文件列表中的所有文件
文件列表
:
result = pd.concat([pd.read_csv(f).set_index(['a', 'b', 'c']) for f in file_list])
挑战在于,我想在 set_index
之前用 column[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':''}
通过评论编辑:
用正则表达式
替换:
dfs= [pd.read_csv(f).replace({'b':{'xyz*':''}}, regex=True).set_index(['a', 'b', 'c']) for f in file_list]
result = pd.concat(dfs)
关于Python Pandas 在 For 循环中替换列中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47496511/