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

标签 python pandas for-loop

我正在尝试连接文件列表中的所有文件 文件列表:

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 字符串不在 ac 列中,则可以创建 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/

相关文章:

r - R 中 for 循环的语法

batch-file - Windows 批处理中缺少操作数错误

python - 调整 x_axis_label 或 y_axis_label 字体/字体大小( Bokeh )

python - 将 DataFrame 与多索引列合并

python - 在 Linux 中使用 ACS ACR1252U USB NFC 读卡器

python - 在 python pandas 中合并两个不同大小的数据框

python - 如何将值递减的多行添加到一个系列中

python - 为什么在用 python 编写 excel 文件时会得到像 [0, 1, 2, ...] 这样的行作为标题?

python - 名称错误在 python 中打印时消失

javascript - 有条件地遍历数组