DataFrame
(从pandas
2.0.0开始)的documentation的参数部分开始:
data:ndarray(结构化或同构)、Iterable、dict或DataFrame
Dict可以包含Series、数组、常量、数据类或类似列表的对象。如果data是dict,则列顺序遵循插入顺序。如果dict包含定义了索引的Series,则按其索引对齐。如果data是Series或DataFrame本身,则也会发生这种对齐。对齐在Series/DataFrame输入上完成。
如果数据是一个字典列表,则列顺序遵循插入顺序。
说明指向有效的输入类型(即 ndarray,Iterable,dict或DataFrame),但没有完全描述 * 如何 * 构造函数将data
转换为DataFrame
。它看起来有点像一个黑盒子。我应该能够预测,基于文档,说,传递一个包含一个Series
且没有其他参数的list
将给予类似于Series.to_frame().T
的结果(尽管数据类型可能不同;参见this answer和this one)?
这个问题的目的是征求答案,根据构造函数如何将数据放入或处理到DataFrame
中,将通过data
将数据传递到DataFrame()
的不同方式进行分类。这必然是一个广泛的问题,但应该有有限数量的情况,因为构造函数是,你知道,我对这个问题很感兴趣,并且愿意通过挖掘源代码来发现答案;然而,我想在我这样做之前,其他有更多经验的人可能会有见解在这里分享。
这是一个关于广义规则的单一问题,我相信它的答案都属于一个地方。然而,由于它是广义的,我将提供一些具体的子问题来帮助我们开始:
- 对于
iterable
s,什么容器和元素组合是有效的?不需要尝试,我应该能够预测如果我传递DataFrames
的list
或Series
的Series
会发生什么?当Series
输入“按索引对齐”时,使用哪个轴?处理是否完全取决于它的元素是什么? - 通过
data
传递的容器和元素类型如何影响DataFrame
的组合方式?我是否能够仅基于data
的知识来预测数据将如何沿着结果DataFrame
的轴对齐?我不知道答案是否显而易见,但无论哪种情况,我都没有看到它的文档。 - 如果我把
DataFrame
看作是“Series
对象的类似命令的容器”(如文档所示),那么控制data
如何被解释(松散地)为键和值的直观规则是什么?
我愿意接受改进这个问题的建议,但我确实认为这是一个需要提出的问题,我在这个网站上没有找到类似的问题。
2条答案
按热度按时间bjp0bcyl1#
作为一个经验法则:
data
与list
相似,则项变为行data
与dict
类似,则项将变为列(以键作为列名)。然后对于 *
data
内的 * 项:dict
like,则item键将成为另一个轴的名称(即,如果data
是list
like,则为columns
,如果data
是dict
like,则为index
)。最后,
Series
是dict
,类似于将index
Map到值;DataFrame
是dict
,类似于将columns
Map到Series
。vuv7lop32#
除了文档之外,阅读测试有时也很有用,特别是
test_constructors.py
。太长,无法描述所有方式,请查看
test_constructors.py