1

我想将每一行中的值组合到一个列表中,并在数据框上添加一列。但是有些列有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()

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

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

1 回答 1

2

堆栈(这消除了 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]
于 2022-01-25T21:58:36.373 回答