如何使用数据框的 column_name 作为行上的值?

Jos*_*ose 2 python dataframe pandas

我有这个框架,2 列(蓝色和红色)和值 (0,1)

**Blue   Red**
   0      1
   1      1
Run Code Online (Sandbox Code Playgroud)

我想要一个 Dataframe 结果,如果列 Red 的 value=1,用 name_column Red 替换这个 1

**Blue   Red**
   0    Red
 Blue   Red
Run Code Online (Sandbox Code Playgroud)

我可以用“for”来做到这一点,但是,你知道另一种方法吗?谢谢

raf*_*elc 5

一种方法是乘以 df相同形状的数组:

df * np.broadcast_to(df.columns.values, df.shape)
Run Code Online (Sandbox Code Playgroud)

   Blue  Red
0        Red
1  Blue  Red
Run Code Online (Sandbox Code Playgroud)

这使您最终在所有单元格中都有字符串。


另一种解决方案是where对每一列使用

df.apply(lambda s: s.where(s.eq(0), s.name))
Run Code Online (Sandbox Code Playgroud)

这让你最终得到混合类型。


作为一般经验法则,最好为每一列使用单一类型的数组。