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”来做到这一点,但是,你知道另一种方法吗?谢谢
一种方法是乘以 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)
这让你最终得到混合类型。
作为一般经验法则,最好为每一列使用单一类型的数组。