我想在数据框架中附加行,该数据被指定为以下类的第一个参数,并根据名称,这是第二个参数,当我实例化一个实例时。
我的问题是,我想更新作为第二个参数传递的数据框架的状态,当我称之为第二个参数时,我没有获得更新状态。
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.df
。self.df
(和df1
(指向的原始对象没有更改。
如果这是重要的功能,我建议使用NAN条目创建一个数据框,并使用loc
或[:]
分配填充它们。