将列表的字典展平到数据框中 [英] Flatten of dict of lists into a dataframe
本文介绍了将列表的字典展平到数据框中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个列表的字典说: data = {'a':[80,130],'b':[64],'c':[58,80]}
如何展平并将其转换为如下所示的数据框:
I have a dict of lists say:
data = {'a': [80, 130], 'b': [64], 'c': [58,80]}
How do I flatten it and convert it into dataframe like the one below:
推荐答案
如果不希望包含一个元素列表,请对 if-else
使用嵌套列表理解:
Use nested list comprehension with if-else
if want no count one element lists:
df = pd.DataFrame([('{}{}'.format(k, i), v1)
if len(v) > 1
else (k, v1)
for k, v in data.items()
for i, v1 in enumerate(v, 1)], columns=['Index','Data'])
print (df)
Index Data
0 a1 80
1 a2 130
2 b 64
3 c1 58
4 c2 80
data = {'a': [80, 130], 'b': np.nan, 'c': [58,80], 'd':[34]}
out = []
for k, v in data.items():
if isinstance(v, float):
out.append([k, v])
else:
for i, x in enumerate(v, 1):
if len(v) == 1:
out.append([k, x])
else:
out.append(['{}{}'.format(k, i), x])
print (out)
[['a1', 80], ['a2', 130], ['b', nan], ['c1', 58], ['c2', 80], ['d', 34]]
df = pd.DataFrame(out, columns=['Index','Data'])
print (df)
Index Data
0 a1 80.0
1 a2 130.0
2 b NaN
3 c1 58.0
4 c2 80.0
5 d 34.0
这篇关于将列表的字典展平到数据框中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文