我正在尝试将某些值转换为数据帧。我使用以下代码来实现此目的:
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))
,但得到同样的错误?
有什么建议吗?
答案 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