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