在存在以下格式的字典时会遇到一个有趣的问题:
test = {'A': [(1,2),(3,4)],
'B': [(1,2),(5,6),(7,8)]}
对于字典中的每个键,它们共享一些值(始终是第一个),但每个列表中有不同数量的元组。
最终,我的目标是以这种格式表示数据:
1 3 5 7
A 2 4 - -
B 2 - 6 8
是否有智能方法将字典值中的这些常用元素转换为数据框的列?
我想让列表长度相等的是:
#get all the unique first elements of the dictionary
unique=[]
for i in test.values():
for j in i:
unique.append(j[0])
unique = set(unique)
values_of_A = test['A']
#I thought this would loop through each tuple in the list and check if its
#first value is in the list of unique elements; otherwise, it will print
#0. However, it comes up with a blank list...
full_list = [0 for i, v in enumerate(values_of_A) if v[0] not in unique]
一如既往地谢谢!
答案 0 :(得分:7)
你可能只是把它弄乱并使用from_dict
替代构造函数:
>>> pd.DataFrame.from_dict({k:dict(v) for k,v in test.items()}, orient='index')
1 3 5 7
A 2 4.0 NaN NaN
B 2 NaN 6.0 8.0
>>>