通过熊猫数据框用str列的空格替换换行符
问题内容:
给定一个示例数据框,其中包含第二行和第三行的自由文本,例如
>>> import pandas as pd
>>> lol = [[1,2,'abc','foo\nbar'], [3,1, 'def\nhaha', 'love it\n']]
>>> pd.DataFrame(lol)
0 1 2 3
0 1 2 abc foo\nbar
1 3 1 def\nhaha love it\n
目标是替换\n
to ``(空格)并剥离第2和3列中的字符串以实现:
>>> pd.DataFrame(lol)
0 1 2 3
0 1 2 abc foo bar
1 3 1 def haha love it
如何通过熊猫数据框用换行符替换特定列的空格?
我已经试过了:
>>> import pandas as pd
>>> lol = [[1,2,'abc','foo\nbar'], [3,1, 'def\nhaha', 'love it\n']]
>>> replace_and_strip = lambda x: x.replace('\n', ' ').strip()
>>> lol2 = [[replace_and_strip(col) if type(col) == str else col for col in list(row)] for idx, row in pd.DataFrame(lol).iterrows()]
>>> pd.DataFrame(lol2)
0 1 2 3
0 1 2 abc foo bar
1 3 1 def haha love it
但是必须有一个更好/更简单的方法。
问题答案:
使用replace
-首先是第一个和最后一个带,然后替换\n
:
df = df.replace({r'\s+$': '', r'^\s+': ''}, regex=True).replace(r'\n', ' ', regex=True)
print (df)
0 1 2 3
0 1 2 abc foo bar
1 3 1 def haha love it