PandasError:未正确调用DataFrame构造函数

时间:2018-04-27 02:01:46

标签: python pandas

我正在尝试将某些值转换为数据帧。我使用以下代码来实现此目的:

import pandas as pd
import numpy as np

k = 5
N = 8

d = ({'Time' : np.random.randint(k, k + 100 , size=N),
    'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'],
    'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'],
    'Number2' : [1,1,'xx',1,'xx',2,'xx',2]}),

df = pd.DataFrame(data=d)

但是,这会产生错误代码PandasError: DataFrame constructor not properly called!

我曾尝试将代码更改为df = pd.DataFrame(eval(d)),但得到同样的错误?

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你有一个错字

d = ({'Time' : np.random.randint(k, k + 100 , size=N),
    'Events' : ['ABC','DEF','GHI','JKL','ABC','DEF','GHI','JKL'],
    'Number1' : ['xx','xx',1,'xx','xx','xx',2,'xx'],
    'Number2' : [1,1,'xx',1,'xx',2,'xx',2]})# used to have comma here
df = pd.DataFrame(data=d)

答案 1 :(得分:0)

如你所知,d是一个元组:

>>> type(d)
<class 'tuple'>

但第一个元素是dict:

>>> type(d[0])
<class 'dict'>

所以你可以这样做:

pd.DataFrame(data=d[0])

返回:

  Events Number1 Number2  Time
0    ABC      xx       1    77
1    DEF      xx       1    39
2    GHI       1      xx    15
3    JKL      xx       1    21
4    ABC      xx      xx    21
5    DEF      xx       2    64
6    GHI       2      xx    84
7    JKL      xx       2    60