我有一个大约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>")
还有其他更优雅的解决方案吗?
答案 0 :(得分:68)
您可以使用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>
答案 1 :(得分:12)
似乎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>
答案 2 :(得分:0)
这将删除所有换行符和不必要的空格。您可以编辑''。join 以指定替换字符
apps[app_name].dir
答案 3 :(得分:0)
您可以遍历所有列并使用 str.replace
方法:
for col in df.columns:
df[col] = df[col].str.replace('\n', '<br>')
此方法默认使用正则表达式。