用numpy的 mask 和 where 能解决这个问题。
问题描述
转换前

希望转换后

希望把dataframe中不为0的数据转换为列名,其他保持为0.
value = np.random.randint(low=0, high=2 ,size=(5,3))
df = pd.DataFrame(value, columns = ['a','b','c'])
mask = (df>0).values
res = pd.DataFrame(np.where(mask, df.columns.values, 0) ,columns=['a','b','c'])