Python 将数据帧存储在系列/数据帧中
在一些Pandas更新(现在使用v1.1.1)之后,我在一个系列中存储数据帧的代码被破坏了。我使用一个类来管理包含标识信息和事务列表的不同帐户的数据框架。以前,下面的代码工作正常,它将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
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
,则一切正常。不会引发任何错误/警告,数据帧可以很好地存储在系列中。在类中使用这个有什么问题