将长度不规则的元组列表转换为数据帧



我有一个包含~500万个元素的列表,其中列表元素表示一个观察值,它可以接受10个单独的值。这些存储为元组,如下所示:

[(0, 0.23411436),
(1, 0.011154618),
(2, 0.32306415),
(3, 0.011153304),
(4, 0.011153304),
(5, 0.011153304),
(6, 0.011153304),
(7, 0.36474636),
(8, 0.011153304),
(9, 0.011154029)]

我想将其转换为 pandas 数据帧,其中每个元组中的第一个值是一列,第二个值是该列的条目。问题是生成这些值的模型抑制了 0.01 <值,因此某些元组条目如下所示:>

[(0, 0.23411436),
(1, 0.011154618),
(3, 0.011153304),
(4, 0.011153304),
(5, 0.011153304),
(7, 0.36474636),
(9, 0.011154029)]

如何将其转换为数据帧,将省略的值替换为零?

您可以在一行中完成,如下所示:

df = pd.DataFrame([dict(lst), dict(short_lst)]).fillna(0)

以下是完整示例:

import pandas as pd
lst = [(0, 0.23411436),
(1, 0.011154618),
(2, 0.32306415),
(3, 0.011153304),
(4, 0.011153304),
(5, 0.011153304),
(6, 0.011153304),
(7, 0.36474636),
(8, 0.011153304),
(9, 0.011154029)]
short_lst = [(0, 0.23411436),
(1, 0.011154618),
(3, 0.011153304),
(4, 0.011153304),
(5, 0.011153304),
(7, 0.36474636),
(9, 0.011154029)]
df = pd.DataFrame([dict(lst), dict(short_lst)]).fillna(0)
print(df.to_string())
#           0         1         2         3         4         5         6         7         8         9
# 0  0.234114  0.011155  0.323064  0.011153  0.011153  0.011153  0.011153  0.364746  0.011153  0.011154
# 1  0.234114  0.011155  0.000000  0.011153  0.011153  0.011153  0.000000  0.364746  0.000000  0.011154

最新更新