有没有办法创建由两列组成的熊猫数据框。第一列将为int数据类型,第二列将为字典类型。然后将数据迭代地插入数据框。
答案 0 :(得分:0)
不,这是不可能的。
熊猫 dtypes (*)与NumPy dtypes密切相关。有一些区别和补充,例如datetime
和category
,但一般来说规则成立。这些额外的dtype通常是NumPy dtype的包装。这里的关键是将这些具有专门定义的dtype的系列保存在连续内存块中。他们可以使用矢量化计算进行操作。
不能以上述方式持有的系列被标记为dtype object
。这不过是指向任意Python类型的指针序列。从任何向量化的意义上讲,您都不应将其视为“字典数组”。您可以将这样的系列与列表进行比较。您永远不会仅仅因为列表包含字典而将其称为“ dtype dict
”。同样,object
系列仅包含字典的事实并不会使它成为一系列dtype dict
。
(*)注意,我使用“ dtype”而不是“ type”。这是故意的。 “ dtype”相对于Pandas / NumPy具有特定而重要的含义,我的回答的其余部分都应证明这一点。
答案 1 :(得分:0)
我在这里可能是完全错误的(从某种意义上说:了解您真正想要的),但是要创建这样的数据框,您可以传递空的熊猫系列,指定要添加的dtype,例如< / p>
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A':pd.Series([], dtype=np.int64),
'B':pd.Series([], dtype='object')
})
然后,让我们假设您要添加一些数据:
datatoinsert = [0, {'key':'value'}]
然后您可以继续使用以下公式:
df.loc[len(df)] = datatoinsert
print(df)
,您有:
A B
0 0 {'key': 'value'}
但是,我确实同意JPP,dict列(它是numpy dtype对象,不会给您带来任何好处,但是int会给您带来好处,并且您可能有兴趣在此周围提高效率)