我正在尝试进行多列选择,然后在 Pandas 中替换df:a b c d e0 1 1 0 none0 0 0 1 none1 0 0 0 none0 0 0 0 none选择其中任何或所有 a、b、c、d 不为零的地方i, j = np.where(df)s=pd.Series(dict(zip(zip(i, j), df.columns[j]))).reset_index(-1, drop=True)s:0 b0 c1 d2 a现在我想用系列替换 e 列中的值:df['e'] = s.values所以 e 看起来像:电子:b, c danone但问题是系列的长度与数据帧中的行数不同。关于我如何做到这一点的任何想法?
2 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
您可以找到 1 并将它们的位置用作数据框列中的布尔索引:
df['e'] = (df==1).apply(lambda x: df.columns[x], axis=1)\
.str.join(",").replace('','none')
# a b c d e
#0 0 1 1 0 b,c
#1 0 0 0 1 d
#2 1 0 0 0 a
#3 0 0 0 0 none
添加回答
举报
0/150
提交
取消