[英]Pandas (Python) - Problem appending list to empty dataframe with column names
我正在尝试附加一个看起来像这样的列表
myList = ['2018-01-12', 'MMM', 'BUY', 42, 236.5229]
到一个空的数据框(带有“标题” /列名称)。
要创建数据框,我做了以下工作:
tradeLog = pd.DataFrame(columns=["DATE", "TICKER", "ORDER_TYPE", "AMOUNT", "PRICE"])
我正在尝试通过以下方式将列表追加为一行:
tradeLog.append(myList, ignore_index=True)
(注意:我的目标是迭代一些数据-许多相同格式的列表-并将它们一个接一个地添加到数据框中)
熊猫文档阅读
DataFrame.append(其他,ignore_index = False,verify_integrity = False,sort = None)
其他:DataFrame或类似Series / dict的对象,或这些对象的列表要附加的数据。
因此,在将列表追加到DataFrame之前,您需要对其进行转换:
可能myList
是将列的列表压缩到myList
的内容上,这样就可以了:
tradeLog = pd.DataFrame(columns=["DATE", "TICKER", "ORDER_TYPE", "AMOUNT", "PRICE"])
myList = ['2018-01-12', 'MMM', 'BUY', 42, 236.5229]
myDict = dict(zip(tradeLog.columns.tolist(), myList))
tradeLog.append(myDict, ignore_index=True)
或tradeLog.append(pd.DataFrame(myDict), ignore_index=True)
这就是说,您需要确保列表的长度始终与列名列表相同。
DataFrame.append()
用于附加其他熊猫数据框或系列的行 (请参阅docs )。
因此,如果绝对有必要逐行执行此操作,则可以
tradeLog = tradeLog.append(pd.Series(myList, index=tradeLog.columns), ignore_index=True)
(Nb: tradeLog.loc[len(tradeLog)] = ...
仅在tradeLog
上具有简单的整数索引时才追加到末尾,但是对于更复杂的用例可能会中断。)
您可能还需要考虑以下文档中的这一说法:
迭代地将行添加到DataFrame可能比单个连接更多地占用大量计算资源。 更好的解决方案是将这些行添加到列表中,然后一次将列表与原始DataFrame连接起来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.