展平列表列表,用某个值替换空的子列表

2024-03-29 07:27:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含空和非空子列表的列表列表列表。 名单的总长度是240。你知道吗

_remain = [['24'],
 ['24'],
 ['17'],
 [],
 ['17'],
 [],
 ['17'],...]

我试着用以下方法将列表平铺成一个列表:

[name for sublist in _remain for name in sublist]

但是当我这样做的时候,我得到了一个长度为220的列表。空的子列表不见了。你知道吗

我的愿望是得到一个扁平的列表,用np.nan替换空列表,这样我就可以将它插入到一个DataFrame中。你知道吗

我想要得到的结果列表:

['24',
 '24',
 'np.nan',
 '17',
 'np.nan',
 '17',...]

我该怎么做?你知道吗


Tags: 方法nameindataframe列表fornpnan
3条回答

因为熊猫被标记了(尽管这可以用上面的答案建议的香草Python来完成),一种方法是:

pd.DataFrame(l).fillna(np.nan).squeeze().tolist()

['24', '17', nan, '17', nan, '17']

您可以执行以下操作:

>>> [name for sublist in _remain for name in (sublist or [np.nan])]
['24', '17', nan, '17', nan, '17']

这里有一个选项:

L = [
    ['24'],
    ['17'],
    [],
    ['17'],
    [],
    ['17']
]
L = np.array([l[0] if l else np.nan for l in L])

输出:

L >> ['24' '17' 'nan' '17' 'nan' '17']

相关问题 更多 >