python - 使用类调用数据框对象上的实例时遇到问题
问题描述
处理类的新手。
我有一些要转换的数据框对象,但是在使用类操作它们时遇到了麻烦。下面是一个例子。目标是转置数据帧并将其重新分配给其原始变量名称。在这种情况下,数据框是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
我想知道我在哪里弄错了。
解决方案
我对您的代码进行了一些更改。问题来自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()
推荐阅读
- azure - Azure 脚本未在 CI 中运行
- javascript - 如何制作一个声明变量的函数?(JS)
- java - 我想在特定长度后拆分字符串而不剪切任何单词,不等于字符串
- c# - SignalR 服务(无服务器)- Azure Functions
- html - 覆盖文本框值
- pyinstaller - 无法在另一台电脑上加载脚本
- python - scipy interp1d 三次插值结果在 scipy 0.18.1 和 1.2.1 之间不同?
- oracle - 尝试以表格形式获取数据的游标时,它无法正常工作
- node.js - 如何实现节点imap的重试机制
- algorithm - 卡车在路上和加油站问题的动态规划算法