从包含列表的字典创建DataFrame

2024-09-29 01:27:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,想把它转换成数据帧。由于不重要的原因,数据帧必须在空状态下操作之前存在,因此我使用以下代码:

dfResult =  pd.DataFrame()
d={}
d['p1']=123
d['p2']='foo'
#d['p3']= [10,10]
df = pd.DataFrame(d, index=[0]) #index is irrelevant

我工作得很好,除非其中一个值是一个列表,但出现以下错误:

^{pr2}$

你知道我怎么解决这个问题吗?在

谢谢


Tags: 数据代码dataframedfindex字典foois
2条回答
dfResult =  pd.DataFrame()
d={}
d['p1']=123
d['p2']='foo'
d['p3']= [10,10]
d = {k:[v] if type(v) is list else v for k,v in d.items()}
df = pd.DataFrame(d, index=[0]) #index is irrelevant

那就行了

我想您可以指定列名:

d={}
d['p1']=123
d['p2']='foo'
d['p3']= [10,10]
df = pd.DataFrame({'col':d})
print (df)
         col
p1       123
p2       foo
p3  [10, 10]

或者可以创建Series

^{pr2}$

对我来说,DataFrame构造函数也可以工作,但是列表值被转换成标量:

d={}
d['p1']=123
d['p2']='foo'
d['p3']= [10,5]
df = pd.DataFrame(d)
print (df)
    p1   p2  p3
0  123  foo  10
1  123  foo   5

如果需要列名称是可能的,请使用^{}并按^{}进行转置:

df = pd.DataFrame.from_dict(d, orient='index').T
print (df)
    p2        p3   p1
0  foo  [10, 10]  123 

或者可以对嵌套的lists使用dict comprehension:

print ({k:[v] for k,v in d.items()})
{'p2': ['foo'], 'p3': [[10, 10]], 'p1': [123]}

df = pd.DataFrame({k:[v] for k,v in d.items()})
print (df)
    p1   p2        p3
0  123  foo  [10, 10]

相关问题 更多 >