DataFrame
的documentation(从pandas
2.0.0开始)的参数部分开始:
data : ndarray (structured or homogeneous), Iterable, dict, or DataFrame个
DICT可以包含序列、数组、常量、数据类或类似列表的对象.如果数据是词典,则列顺序遵循插入顺序.如果词典包含定义了索引的系列,则按其索引对齐.如果数据是Series或DataFrame本身,也会发生这种对齐.在Series/DataFrame输入上进行对齐.
如果数据是字典列表,则列顺序遵循插入顺序.
该描述指向有效的输入类型(即ndarray, Iterable, dict, or DataFrame)but does not completely describe how the constructor will turn the 102 into a 103.它看起来有点像一个黑匣子.根据文档,我应该能够预测,比如说,传递一个包含单个Series
而不包含其他参数的list
将得到类似于Series.to_frame().T
的结果(尽管数据类型可能不同;请参见this answer和this one)?
这个问题的目的是征求答案.这必然是一个广泛的问题,但鉴于构造函数是在代码中实现的,应该有有限数量的情况.我对这个问题很感兴趣,并愿意稍微挖掘一下源代码以找到答案;然而,我认为其他有更多经验的人可能会在我之前在这里分享一些见解.
这是一个关于广泛规则的单一问题,我相信它的答案应该放在一个地方.然而,由于它很广泛,我将提供一些具体的子问题来开始:
-
对于
iterable
,哪些容器和元素组合有效?在不需要try 的情况下,我应该能够预测如果我通过了DataFrames
分的list
分或Series
分的Series
分会发生什么吗?当Series
输入"按其索引对齐"时,使用哪个轴?治疗完全取决于它的要素是什么吗? -
通过
data
传递的容器和元素类型如何影响DataFrame
的组合方式?仅仅基于data
的知识,我应该能够预测数据将如何沿着结果DataFrame
的轴对齐吗?我不知道答案是否显而易见,但在任何一种情况下,我都没有看到它的记录. -
如果我把
DataFrame
想象成"Series
个对象的类似字典的容器"(正如文档所建议的那样),那么控制如何(大致地)将data
解释为键和值的直观规则是什么?
我对改进这个问题的建议持开放态度,但我确实认为这是一个需要提出的问题,我在这个网站上没有找到类似的问题.