gpt4 book ai didi

python - 从 dict 以列表作为值创建 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:49 26 4
gpt4 key购买 nike

我有一本字典,想将其转换为数据框。由于不重要的原因,数据框必须在空状态操作之前存在,因此我使用此代码:

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

我工作正常,除非其中一个值是一个列表,当它失败并显示此消息时:

ValueError: could not broadcast input array from shape (2) into shape (1)

知道如何解决这个问题吗?

谢谢

最佳答案

我想你可以指定列名:

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]

或者可以创建系列:

s = pd.Series(d)
print (s)
p1 123
p2 foo
p3 [10, 10]
dtype: object

同样对我而言,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

如果需要列名,可以使用 DataFrame.from_dict并通过 T 进行转置:

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

或者可以对嵌套的 list 使用字典理解:

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]

关于python - 从 dict 以列表作为值创建 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44717582/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com