作为我对列中混合类型的问题的后续跟进:
我可以将a DataFrame视为列列表还是行列表?
在前一种情况下,这意味着(最佳地)每列必须是同质的(类型),并且不同的列可以是不同类型的.后一种情况表明,每一行都是类型均匀的.
对于文档:
DataFrame是一个二维标记数据结构,具有可能不同类型的列.
这意味着DataFrame是列的列表.
是否意味着向a追加一行DataFrame比追加一列更昂贵?
您完全正确的是,DataFrame可以被视为列列表,甚至更多(有序)列的字典(请参阅此处的说明).
实际上,每列必须是同类的,不同的列可以是不同的类型.但是通过使用objectdtype,您仍然可以在一列中保存不同类型的对象(尽管不建议分开用于例如字符串).
为了说明,如果您询问DataFrame的数据类型,则会获得每列的dtype:
In [2]: df = pd.DataFrame({'int_col':[0,1,2], 'float_col':[0.0,1.1,2.5], 'bool_col':[True, False, True]})
In [3]: df.dtypes
Out[3]:
bool_col bool
float_col float64
int_col int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
在内部,值存储为相同类型的块.每列或相同类型的列集合都存储在单独的数组中.
这确实意味着追加一行更加昂贵.通常,附加多个单行并不是一个好主意:更好的是例如预先分配一个空数据帧来填充,或者将新行/列放在一个列表中并立即将它们连接起来.
请参阅concat/append docs末尾的注释(就在第一小节"在其他轴上设置逻辑"之前).
| 归档时间: |
|
| 查看次数: |
892 次 |
| 最近记录: |