微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 向Pandas数据帧添加行

我正在尝试使用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] 举报,一经查实,本站将立刻删除。

相关推荐