通过类方法更新全局数据框架



我想在数据框架中附加行,该数据被指定为以下类的第一个参数,并根据名称,这是第二个参数,当我实例化一个实例时。

我的问题是,我想更新作为第二个参数传递的数据框架的状态,当我称之为第二个参数时,我没有获得更新状态。

import pandas as pd
class RecordClass(object):
    def __init__(self, df, name):
        self.name = name
        self.df = df
    def write_method(self, *args):
        keys = ['key1', 'key2', 'key3']
        dictionary = dict()
        dictionary['name'] = self.name
        for idx, key in enumerate(keys):
            dictionary[key] = args[idx]
        self.df = self.df.append(dictionary, ignore_index=True)
        df = self.df[keys]
        return self.df
df1 = pd.DataFrame()
data = [1, 2, 3]
instance1 = RecordClass(df1, 'a')
print instance1.write_method(*data)
print 
print df1

我得到的结果是:

   key1  key2  key3 name
0   1.0   2.0   3.0    a
Empty DataFrame
Columns: []
Index: []

这意味着df1未更新。调用write_method方法后,如何更新df1,而无需分配df1 = instance1.write_method(...)

you 不能append不是一个内置操作,当您在附加的结果下重新配合self.df时,您只是创建 new 对象,与原件完全不同,并且将该对象分配给self.dfself.df(和df1(指向的原始对象没有更改。

如果这是重要的功能,我建议使用NAN条目创建一个数据框,并使用loc[:]分配填充它们。

最新更新