将一个键和多个值的字典转换为pandas dataframe



如何将此字典转换为pandas数据框架?

dict = {'key1':['value1','value2'], 'key2':['value1','value2', 'value3'], 'key3':['value1','value2', 'value3', 'value4'] }

我都试过了:

pd.Dataframe(dict)pd.DataFrame.from_dict(dict)

,但我得到相同的错误。

ValueError: All arrays must be of the same length

因此,看起来内置的可能性只适用于balanced字典。

有什么帮助吗?

所以,看起来内置的可能性只适用于平衡字典。

DataFrame.from_dict可以通过设置orient='index':

来处理不均匀字典。
pd.DataFrame.from_dict(d, orient='index')
#            0       1       2       3
# key1  value1  value2    None    None
# key2  value1  value2  value3    None
# key3  value1  value2  value3  value4

要获得转置版本,链接.T:

pd.DataFrame.from_dict(d, orient='index').T
#      key1    key2    key3
# 0  value1  value1  value1
# 1  value2  value2  value2
# 2    None  value3  value3
# 3    None    None  value4

要获得没有null的长格式版本,meltidvalue列的转置版本和dropna仅在value上:

(pd.DataFrame.from_dict(d, orient='index').T
.melt(var_name='id', value_name='value')
.dropna(subset=['value']))
#       id   value
# 0   key1  value1
# 1   key1  value2
# 4   key2  value1
# 5   key2  value2
# 6   key2  value3
# 8   key3  value1
# 9   key3  value2
# 10  key3  value3
# 11  key3  value4

您可以使用itertools.zip_longest来创建一个数据框架:

from itertools import zip_longest
dct = {
"key1": ["value1", "value2"],
"key2": ["value1", "value2", "value3"],
"key3": ["value1", "value2", "value3", "value4"],
}

df = pd.DataFrame(zip_longest(*dct.values(), fillvalue=np.nan), columns=dct)
print(df)

打印:

key1    key2    key3
0  value1  value1  value1
1  value2  value2  value2
2     NaN  value3  value3
3     NaN     NaN  value4

相关内容

  • 没有找到相关文章

最新更新