如何创建一个熊猫数据框,其中列的数据类型将是字典?

时间:2018-07-28 18:44:34

标签: python pandas

有没有办法创建由两列组成的熊猫数据框。第一列将为int数据类型,第二列将为字典类型。然后将数据迭代地插入数据框。

2 个答案:

答案 0 :(得分:0)

不,这是不可能的。

熊猫 dtypes (*)与NumPy dtypes密切相关。有一些区别和补充,例如datetimecategory,但一般来说规则成立。这些额外的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会给您带来好处,并且您可能有兴趣在此周围提高效率)