我正在处理一些大熊猫数据框,但是花了太多时间逐行迭代数据框。因此,我定义了一些新类来加快速度。问题是,如果以这种方式定义,我只能以df.loc(n,col)
之类的方式访问数据帧,而不能以普通的熊猫方式(df.loc[n,col]
)进行访问。这意味着修改以前的代码需要做很多工作。我试图阅读熊猫的源代码,但毫无头绪。有什么办法可以解决?非常感谢!
class Data:
def __init__(self,lenth,df=None):
self.data = df
if df == None:
self.data = pd.DataFrame(columns=[])
self.lenth = lenth
self.all = None
self.all_init = False
self.start = None
self.count = None
def clip(self):
if np.shape(self.data)[0] >= 2*self.lenth:
m = math.floor((self.data.index.values[-1] - self.data.index.values[0]+1)/self.lenth) - 1
start = self.data.index.values[0]
df = self.data.loc[start:start+m*self.lenth-1]
if self.all_init == True:
self.all = self.all.append(df)
else:
self.all = df
self.all_init = True
self.data = self.data.drop(range(start,start+m*self.lenth))
self.start = self.data.index.values[0]
def loc(self,n,col):#indexing
try:
if col != None:
return self.data.loc[n,col]
else:
return self.data.loc[n]
except:#find in all
if col != None:
return self.all.loc[n,col]
else:
return self.all.loc[n]