我想将两列聚合到新列中。两列可能包含 NaN 值。表格如下所示:
no type status category
1 a xx yy
2 b xx nan
3 c nan nan
到目前为止我尝试过的是使用以下脚本聚合它们。但它也结合了两个 NaN 成为 NaN_NaN
df['category'] = df[['cat_1', 'cat_2']].astype(str).agg('_'.join, axis = 1)
预期结果是如果有两个 NaN,新列只会给新列 NaN 而不是 NaN_NaN
no type cat_1 cat_2 category
1 a xx yy xx_yy
2 b xx nan xx_nan
3 c nan nan nan
答案 0 :(得分:0)
你可以这样做:
df["category"] = df[["cat_1","cat_2"]].astype(str).agg(lambda x: '_'.join(set(x)), 1)
或等效地:
df["category"] = df[["cat_1","cat_2"]].astype(str).agg(set, 1).agg('_'.join)
输出(两种情况下)
df
no type cat_1 cat_2 category
0 1 a xx yy xx_yy
1 2 b xx NaN nan_xx
2 3 c NaN NaN nan