首页 > 解决方案 > 无法删除表中的列

问题描述

初学者在这里。

在此处某人的帮助下,我能够提取此页面上的第二个和第三个表(团队统计和团队分析 5 对 5),其中包括最后一部分:

for each in comments:
    if 'table' in str(each):
        try:
            tables.append(pd.read_html(each, header=1)[0])
            tables = tables[tables['Rk'].ne('Rk')]
            tables = tables.rename(columns={'Unnamed: 1':'Team'})
        except:
            for table in tables[1:3]:
                print(table)

它们是标准数据框,但我只是不知道如何从中删除一些列。我试图通过使用 df.drop 来做到这一点:

for each in comments:
    if 'table' in str(each):
        try:
            tables.append(pd.read_html(each, header=1)[0])
            tables = tables[tables['Rk'].ne('Rk')]
            tables = tables.rename(columns={'Unnamed: 1':'Team'})
        except:
            for table in tables[1:3]:
                df = pd.read_table = [1]
                df = df.drop({"AvAge", "GP", "W", "L", "OL", "PTS", "GF", "GA", "SOW", "SOL", "SOS", "PP", "PPO", "PP%", "PPA", "PPOA", "PK%", "SH", "SHA", "PIM/G", "oPIM/G", "S", "SA", "SO"}, 1)
                print(df)
                df = pd.read_table = [2]
                df = df = df.drop({"S%", "SV%", "CF", "CA", "FF", "FA", "xGF", "xGA", "aGF", "aGA", "SCF", "SCA", "HDF", "HDA", "HDGF", "HDGA"}, 1)
                print(df)

但我得到了这个答案:

AttributeError: 'list' 对象没有属性 'drop'

感觉使用“df”和“table”有问题,但我完全不确定。这就是我暂时卡住的地方。

提前谢谢!

标签: pythondataframe

解决方案


不,问题出在复合赋值语句上。

df = pd.read_table = [1]
print(df)
print(pd.read_table)

输出:

[1]
[1]

此代码同时分配[1]dfpd.read_table。然后代码调用df.drop()but dfis alist并且list没有drop()方法。更麻烦的是代码将 a 分配listpd.read_table可调用对象。我不确定您要在这里做什么,但这肯定是您错误的根源。


推荐阅读