首页 > 解决方案 > 使用类调用数据框对象上的实例时遇到问题

问题描述

处理类的新手。

我有一些要转换的数据框对象,但是在使用类操作它们时遇到了麻烦。下面是一个例子。目标是转置数据帧并将其重新分配给其原始变量名称。在这种情况下,数据框是assets.

import pandas as pd
from requests import get
import numpy as np

html = get("https://www.cbn.gov.ng/rates/Assets.asp").text

table = pd.read_html(html,skiprows=[0,1])[2]
assets = table[1:13]

class Array_Df_Retitle:
    def __init__(self,df):
        self.df = df
        
    def change(self):
        self.df = self.df.transpose()
        self.df.columns = self.df[0]
        return self.df

但是,调用assets = Array_Df_Retitle(assets).change()只会产生错误:

KeyError: 0

我想知道我在哪里弄错了。

标签: pythonpandasclassoop

解决方案


我对您的代码进行了一些更改。问题来自self.df[0]. 这意味着您正在选择名为 的列0。但是,在转置之后,您将没有任何名为0. 相反,您将有一排。

import pandas as pd
from requests import get
import numpy as np

html = get("https://www.cbn.gov.ng/rates/Assets.asp").text

table = pd.read_html(html,skiprows=[0,1])[2]
assets = table[1:13]

class Array_Df_Retitle:
    def __init__(self,df):
        self.df = df
        
    def change(self):
        self.df = self.df.dropna(how='all').transpose()
        self.df.columns = self.df.loc[0,:]
        return self.df.drop(0).reset_index(drop=True)


Array_Df_Retitle(assets).change()

在此处输入图像描述


推荐阅读