You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas构造DataFrame时为何支持传入collections.deque类型对象

你写的这段XML解析代码可以正常运行,核心原因是pandas构造DataFrame时,对传入的列数据并没有强制要求必须是list类型,底层逻辑如下:

  • pandas的DataFrame接收字典构造入参时,只要求字典的值是长度匹配的一维可迭代对象,不需要是list的子类。collections.deque本身实现了Python的迭代协议和序列协议,完全满足入参要求。
  • 内部处理阶段,pandas会调用内置的sanitize_array工具函数处理每一列的输入:不管传入的是list、deque、tuple还是其他自定义可迭代类型,只要支持遍历操作,都会被统一转换为numpy.ndarray格式再用于后续的列构造,整个过程不会校验输入是否为list的子类。
  • 官方文档示例只标注list只是因为这是最普遍的使用场景,不属于使用限制,实际只要是长度符合要求的可迭代对象都可以正常使用。

你可以自行做简单验证,以下代码也可以正常生成DataFrame:

from collections import deque
import pandas as pd
pd.DataFrame({'col1': deque([1,2,3]), 'col2': (4,5,6)})

内容的提问来源于stack exchange,提问作者Ning Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:15:09