Python 将数据帧存储在系列/数据帧中

Python 将数据帧存储在系列/数据帧中,python,pandas,dataframe,Python,Pandas,Dataframe,在一些Pandas更新(现在使用v1.1.1)之后,我在一个系列中存储数据帧的代码被破坏了。我使用一个类来管理包含标识信息和事务列表的不同帐户的数据框架。以前,下面的代码工作正常,它将tr和eod数据帧存储在帐户的每个相关行中 class Accounts: def __init__(self): self.accs = pd.DataFrame(columns=['desc', 'type', 'mask', 'tr', 'eod']) def

在一些Pandas更新(现在使用v1.1.1)之后,我在一个系列中存储数据帧的代码被破坏了。我使用一个类来管理包含标识信息和事务列表的不同帐户的数据框架。以前,下面的代码工作正常,它将
tr
eod
数据帧存储在帐户的每个相关行中

class Accounts:
    def __init__(self):
        self.accs = pd.DataFrame(columns=['desc', 'type', 'mask', 'tr', 'eod'])
        
    def append(self, account_name, account_description, account_type, filemask):
        """Add new account to Accounts class."""
        
        self.accs = self.accs.append(pd.DataFrame(data=
                {'desc': account_description, 
                 'type': account_type, 
                 'mask': filemask}, 
                 index=pd.Index([account_name])), sort=True)
           
    def add_data(self, name, tr, eod):
        """Add data to an account in class.
        
        Input:
            name = Account name / id
            tr = Transactions DataFrame
            eod = End of day DataFrame
        """      
        self().loc[name]['tr'] = tr
        self().loc[name]['eod'] = eod 

    def __call__(self, name=False):  
        if name:
            return self.accs.loc[name]
        else:
            return self.accs
下面是我目前如何使用这些函数的示例

accs = Accounts()
accs.append('name', 'desc', 'type', 'mask')
# tr and eod generated elsewhere but they are DataFrames
accs.add_data('name', tr, eod)
使用上面的类代码,我得到了一个
值,该值试图在数据帧
错误的切片副本上设置,并且在
accs
数据帧中没有存储任何内容。而且这种方法以前一直有效,没有任何问题或警告。有些地方发生了变化

如果我将存储代码更改为

self().loc[name, 'tr'] = tr
self().loc[name, 'eod'] = eod
我得到一个错误
ValueError:索引器与数据帧不兼容

有趣的是,如果我手动执行与原始代码中完全相同的操作:
accs().loc['name']['tr']=tr
,则一切正常。不会引发任何错误/警告,数据帧可以很好地存储在系列中。在类中使用这个有什么问题