我有一个列表列表,其中包含空子列表和非空子列表。 列表的总长度为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',...]
我应该尝试什么?
答案 0 :(得分:3)
您可以执行以下操作:
>>> [name for sublist in _remain for name in (sublist or [np.nan])]
['24', '17', nan, '17', nan, '17']
答案 1 :(得分:2)
由于已标记了熊猫(尽管可以按照上面的答案建议使用香草python完成),所以一种方法是:
c:\Python38\python.exe setup.py install
pd.DataFrame(l).fillna(np.nan).squeeze().tolist()
答案 2 :(得分:2)
这里是一种选择:
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']
答案 3 :(得分:2)
您可以使用一个小的助手功能:
lst = [[1], [], [2], [], [3]]
def func(x):
try:
return x[0]
except IndexError:
return None
[func(i) for i in lst]
# [1, None, 2, None, 3]
答案 4 :(得分:1)
您可以使用:
$$2^2^x$$
或
flat_list = [item for sublist in l for item in sublist]