我正在尝试使用pandas来创建活动分类帐.我的对象将有一个pandas DataFrame,它将跟踪与该对象关联的余额和事务.
当订单与该对象关联时,我正在努力将单行数据附加到该pandas数据帧.似乎最常见的答案是“只有在拥有所有数据后才创建框架”,但我无法做到这一点.我希望能够在我添加新数据时动态计算.
这是我的相关代码(失败):
self.ledger = pd.DataFrame(data={'entry_date' : [pd.Timestamp('1900-01-01')],
'qty' : [np.float64(startingBalance)],
'element_type' : [pd.Categorical(["startingBalance"])],
'avail_bal' : [np.float64(startingBalance)],
'firm_ind' : True,
'deleted_ind' : False,
'ord_id' : ["fooA"],
'parent_ord_id' : ["fooB"] },
columns=ledgerColumnList
)
self.ledger.iloc[-1] = dict({'entry_date' : ['1900-01-02'],
'qty' : [startingBalance],
'element_type' : ["startingBalance"],
'avail_bal' : [startingBalance],
'firm_ind' : [True],
'deleted_ind' : [False],
'ord_id' : ["foofa"],
'parent_ord_id' : ["foofb"] })
这是我得到的错误:
File "C:\Users\MyUser\My Documents\Workspace\myscript.py", line 135, in __init__
'parent_ord_id' : ["foofb"] })
File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 117, in __setitem__
self._setitem_with_indexer(indexer, value)
File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 492, in _setitem_with_indexer
setter(item, v)
File "C:\Python27\lib\site-packages\pandas\core\indexing.py", line 422, in setter
s._data = s._data.setitem(indexer=pi, value=v)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 2843, in setitem
return self.apply('setitem', **kwargs)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 2823, in apply
applied = getattr(b, f)(**kwargs)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 636, in setitem
values, _, value, _ = self._try_coerce_args(self.values, value)
File "C:\Python27\lib\site-packages\pandas\core\internals.py", line 2066, in _try_coerce_args
raise TypeError
TypeError
思考?
1)我怎么能在熊猫中做到这一点?
要么
2)我应该使用哪些更好的东西,它会给我内置的大熊猫计算工具,但更适合我一点一点的数据需求?
解决方法:
你也可以使用df.loc []
df = pd.DataFrame({'A': [1,2,3,4], 'B': [5,6,7,8], 'C': [9,10,11,12]})
df
A B C
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
new_row = pd.DataFrame({'A': [35], 'B': [27], 'C': [43]})
new_row
A B C
0 35 27 43
df.loc[4] = new_row.loc[0]
df
A B C
0 1 5 9
1 2 6 10
2 3 7 11
3 4 8 12
4 35 27 43
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。