从来自html表的数据框中删除rn



使用python, pandas我有一个与pandas.read_html(table)创建的数据框架,表是一个从网站上刮下来的html表。当表被打印出来的时候,它周围的所有东西都有'rn',为了可读性,我想删除它。当我用df = pandas.read_html(table.replace(r'rn', ''))[0]删除它时,它破坏了表,没有输出任何东西。如何在不破坏表的情况下删除'rn' ?

编辑:这是测试代码
df = pd.DataFrame({r'rn Column1rn':[r'rn Data1rn',r'rn Data2rn',r'rn Data3rn'],
r'rn Column2rn':[r'rn Data4rn',r'rn Data5rn',r'rn Data6rn']})
print (df)
cols_to_check = [r'rn Column1rn']
print (df[cols_to_check])
df[cols_to_check] = df[cols_to_check].replace({r'rn':''}, regex=True)
print(df)```

方法1:

Try this:

df.replace({r'rn': ''}, regex=True)

如果问题仍然存在,请尝试逐个修改

df['column'].replace({r'rn': ''}, regex=True)

else尝试更改一个单元格以调试问题

df.iloc[1,2].replace({r'rn': ''}, regex=True)

方法二:安装BeautifulSouppip install BeautifulSoup并尝试如下:

from bs4 import BeautifulSoup
df.Column = df.Column.apply(lambda r: BeautifulSoup(r,'html.parser').get_text())

试试这个,看起来需要转义。并且这些列需要重命名,而不是使用replace。

df = pd.DataFrame({r'rn Column1rn':[r'rn Data1rn',r'rn Data2rn',r'rn Data3rn'],
r'rn Column2rn':[r'rn Data4rn',r'rn Data5rn',r'rn Data6rn']})

new_cols = []
for c in df.columns.tolist():
new_cols.append(c.replace('\r\n', ''))
df.columns = new_cols

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

输出:

In [37]: df
Out[37]:
Column1  Column2
0    Data1    Data4
1    Data2    Data5
2    Data3    Data6

还要注意你的列有一个空格,所以你可能也想把它清理掉

In [38]: df.columns
Out[38]: Index([' Column1', ' Column2'], dtype='object')

最新更新