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

问题描述 投票:0回答:1

我有一个包含约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)]

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

python pandas tuples
1个回答
1
投票

您可以这样一行完成:

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
© www.soinside.com 2019 - 2024. All rights reserved.