繁体   English   中英

替换熊猫数据框中所有出现的字符串(Python)

[英]Replace all occurrences of a string in a pandas dataframe (Python)

我有一个大约 20 列的 pandas 数据框。

可以通过手动写入所有列名来替换所有出现的字符串(这里是换行符):

df['columnname1'] = df['columnname1'].str.replace("\n","<br>")
df['columnname2'] = df['columnname2'].str.replace("\n","<br>")
df['columnname3'] = df['columnname3'].str.replace("\n","<br>")
...
df['columnname20'] = df['columnname20'].str.replace("\n","<br>")

不幸的是,这不起作用:

df = df.replace("\n","<br>")

还有其他更优雅的解决方案吗?

您可以使用replace并传递字符串以查找/替换为字典键/项目:

df.replace({'\n': '<br>'}, regex=True)

例如:

>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
   a    b
0  1\n  4\n
1  2\n  5
2  3    6\n

>>> df.replace({'\n': '<br>'}, regex=True)
   a      b
0  1<br>  4<br>
1  2<br>  5
2  3      6<br>

请注意,此方法默认返回一个新的 DataFrame 实例(它不会修改原始实例),因此您需要重新分配输出:

df = df.replace({'\n': '<br>'}, regex=True)

或指定inplace=True

df.replace({'\n': '<br>'}, regex=True, inplace=True)

Pandas 似乎已更改其 API 以避免在处理正则表达式时出现歧义。 现在你应该使用:

df.replace({'\n': '<br>'}, regex=True)

例如:

>>> df = pd.DataFrame({'a': ['1\n', '2\n', '3'], 'b': ['4\n', '5', '6\n']})
>>> df
   a    b
0  1\n  4\n
1  2\n  5
2  3    6\n

>>> df.replace({'\n': '<br>'}, regex=True)
   a      b
0  1<br>  4<br>
1  2<br>  5
2  3      6<br>

您可以遍历所有列并使用str.replace方法:

for col in df.columns:
   df[col] = df[col].str.replace('\n', '<br>')

此方法默认使用正则表达式。

这将删除所有换行符和不必要的空格。 您可以编辑' '.join以指定替换字符

    df['columnname'] = [''.join(c.split()) for c in df['columnname'].astype(str)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM