我有一个包含约500万个元素的列表,其中list元素表示一个观察值,可以采用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