我有一个列表字典说:data = {'a': [80, 130], 'b': [64], 'c': [58,80]}如何将其展平并将其转换为如下所示的数据帧:

python - 将列表的字典展平为数据框-LMLPHP

最佳答案

如果不想要一个元素列表,请使用带有 if-else 的嵌套列表理解:

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

关于python - 将列表的字典展平为数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51654012/

10-11 22:24
查看更多