使用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)
方法二:安装BeautifulSoup
pip 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')