如何在pandas数据帧中使每列1和其他0的最大值?

时间:2018-06-08 04:46:36

标签: python pandas dataframe

我有一个带浮点值的数据框。我想在第0列中列出每列1和所有其他列的最大值。

示例:

1 2 3

4 5 1

7 0 1

变为

0 0 1

0 1 0

1 0 0

假设还存在标题和索引。

如何在这里使用df.apply()方法?

2 个答案:

答案 0 :(得分:3)

使用df.apply的最佳方法是不使用df.apply

(df == df.max()).astype(int)

   0  1  2
0  0  0  1
1  0  1  0
2  1  0  0

答案 1 :(得分:1)

您可以尝试pd.get_dummies(df.idxmax(1))

df.idxmax(1)返回每行的MAX列的pandas.series。

df
Out[204]: 
   A  B  C
1  1  2  3
2  4  5  1
3  7  0  1

df.idxmax(1)
Out[205]: 
1    C
2    B
3    A

然后pd.get_dummies()将根据最大值系列创建虚拟数据框

pd.get_dummies(df.idxmax(1))
Out[206]: 
   A  B  C
1  0  0  1
2  0  1  0
3  1  0  0