我有一个包含两列的数据帧。第一列包含一个整数,第二列包含多个项目的列表,这些项目也可以为空。我想返回一个包含元组的列表,其中元组的第一部分是来自col1的整数,元组的第二部分是来自coll2的整数,总共列出了所有可能的结果。输入:
col1 col2
0 909101 [1396920, 3094857]
1 21095887 [8383568]
2 8383568 [21095887]
3 2408689 []
期望输出:
[(909101, 1396920),
(909101, 3094857),
(21095887, 8383568),
(8383568, 21095887),
(2408689, None)]
到目前为止,我有这些,但它只输出非空输入的元组。
[(df[col1][i],df[col2][i][j])
for i in range(len(df))
for j in range(len(df[col2][i]))]
[(909101, 1396920),
(909101, 3094857),
(21095887, 8383568),
(8383568, 21095887)]
一个快速而肮脏的修复,将第二个循环变成每个循环的正常:
[(df[col1][i], x)
for i in range(len(df))
for x in (df[col2][i] or [None])]