数据框将行值组合到没有 NaN 的列表中

dataframe combine row values to a list without NaN

我想将每一行中的值合并到一个列表中,并在数据框中添加一列。但是有些栏目有NaN,我怎样才能删除列表中的NaN

df

A  B  C
2  3  NaN
1  3  1
3  4  6

预期输出

A  B  C    D
2  3  NaN  [2, 3]
1  3  1    [1, 3, 1]
3  4  6    [3, 4, 6]

我知道我们可以在数据框中使用 dropna(),但是在这种组合行值的情况下,我们如何使用 dropna()

我的代码在这里,我在tolist()df之后尝试了dropna(),它们没有正确输出

df['D'] = df.values.tolist()

堆栈(这消除了 NaN),从初始帧开始分组索引,然后聚合到 lis

df['D']=df.stack().groupby(level=0).agg(list)



   A  B    C                D
0  2  3  NaN       [2.0, 3.0]
1  1  3  1.0  [1.0, 3.0, 1.0]
2  3  4  6.0  [3.0, 4.0, 6.0]