我需要在此输出中删除该行中的unnamed:level_0标题和其他列标题,并将列标题直接放在下面的行中

2024-09-30 20:26:38 发布

您现在位置:Python中文网/ 问答频道 /正文

筛刮

    `url = 'https://www.pro-football- 
    reference.com/teams/buf/2020/gamelog/'
    BuffaloBillsO = pd.read_html(url)[0]`

重命名未命名的级别1

BuffaloBillsO.rename(columns={'Unnamed: 4_level_1': 'W/L'}, inplace=True)

BuffaloBillsO.rename(columns={'Unnamed: 3_level_1': 'Box_link'}, inplace=True)

BuffaloBillsO.rename(columns={'Unnamed: 6_level_1': '@'}, inplace=True)

BuffaloBillsO.rename(columns={'Unnamed: 3_level_1': 'Box_link'}, inplace=True)

strong文本

我尝试了以下解决方案的变体,但它替换了前两行,并将第一行数据转换为列标题:

BuffaloBillsO.columns = BuffaloBillsO.iloc[0]  
BuffaloBillsO=BuffaloBillsO[1:]
BuffaloBillsO.rename_axis(columns=None).reset_index(drop=True) 

Tags: columnshttpsboxtrueurlwwwlinklevel
2条回答

所以我试了一下,效果很好

ncols=[]
for i in range(len(BuffaloBillsO.columns)):
    ncols.append(BuffaloBillsO.columns[i][1])
ncols=dict(zip(BuffaloBillsO.columns,ncols))
BuffaloBillsO.columns =BuffaloBillsO.columns.to_series().map(ncols)

下面是BuffaloBillsO.columns的输出

Index(['Week', 'Day', 'Date', 'Unnamed: 3_level_1', 'Unnamed: 4_level_1', 'OT',
       'Unnamed: 6_level_1', 'Opp', 'Tm', 'Opp', 'Cmp', 'Att', 'Yds', 'TD',
       'Int', 'Sk', 'Yds.1', 'Y/A', 'NY/A', 'Cmp%', 'Rate', 'Att', 'Yds',
       'Y/A', 'TD', 'FGM', 'FGA', 'XPM', 'XPA', 'Pnt', 'Yds', '3DConv',
       '3DAtt', '4DConv', '4DAtt', 'ToP'],
      dtype='object')

您可以使用.read_html()传入头级别:

import pandas as pd

url = 'https://www.pro-football-reference.com/teams/buf/2020/gamelog/'
BuffaloBillsO = pd.read_html(url,header=1)[0]

输出:

print(BuffaloBillsO.columns)
Index(['Week', 'Day', 'Date', 'Unnamed: 3', 'Unnamed: 4', 'OT', 'Unnamed: 6',
       'Opp', 'Tm', 'Opp.1', 'Cmp', 'Att', 'Yds', 'TD', 'Int', 'Sk', 'Yds.1',
       'Y/A', 'NY/A', 'Cmp%', 'Rate', 'Att.1', 'Yds.2', 'Y/A.1', 'TD.1', 'FGM',
       'FGA', 'XPM', 'XPA', 'Pnt', 'Yds.3', '3DConv', '3DAtt', '4DConv',
       '4DAtt', 'ToP'],
      dtype='object')

相关问题 更多 >