pandas 从数据构造DataFrame()的所有方法

hof1towb  于 2023-04-18  发布在  其他
关注(0)|答案(2)|浏览(132)

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 answerthis one)?
这个问题的目的是征求答案,根据构造函数如何将数据放入或处理到DataFrame中,将通过data将数据传递到DataFrame()的不同方式进行分类。这必然是一个广泛的问题,但应该有有限数量的情况,因为构造函数是,你知道,我对这个问题很感兴趣,并且愿意通过挖掘源代码来发现答案;然而,我想在我这样做之前,其他有更多经验的人可能会有见解在这里分享。
这是一个关于广义规则的单一问题,我相信它的答案都属于一个地方。然而,由于它是广义的,我将提供一些具体的子问题来帮助我们开始:

  • 对于iterable s,什么容器和元素组合是有效的?不需要尝试,我应该能够预测如果我传递DataFrameslistSeriesSeries会发生什么?当Series输入“按索引对齐”时,使用哪个轴?处理是否完全取决于它的元素是什么?
  • 通过data传递的容器和元素类型如何影响DataFrame的组合方式?我是否能够仅基于data的知识来预测数据将如何沿着结果DataFrame的轴对齐?我不知道答案是否显而易见,但无论哪种情况,我都没有看到它的文档。
  • 如果我把DataFrame看作是“Series对象的类似命令的容器”(如文档所示),那么控制data如何被解释(松散地)为键和值的直观规则是什么?

我愿意接受改进这个问题的建议,但我确实认为这是一个需要提出的问题,我在这个网站上没有找到类似的问题。

bjp0bcyl

bjp0bcyl1#

作为一个经验法则:

  • 如果datalist相似,则项变为行
  • 如果datadict类似,则项将变为列(以键作为列名)。

然后对于 * data内的 * 项:

  • 如果 itemsdict like,则item键将成为另一个轴的名称(即,如果datalist like,则为columns,如果datadict like,则为index)。

最后,Seriesdict,类似于将indexMap到值;DataFramedict,类似于将columnsMap到Series

vuv7lop3

vuv7lop32#

除了文档之外,阅读测试有时也很有用,特别是test_constructors.py
太长,无法描述所有方式,请查看test_constructors.py

相关问题