我有一个带浮点值的数据框。我想在第0列中列出每列1和所有其他列的最大值。
示例:
1 2 3
4 5 1
7 0 1
变为
0 0 1
0 1 0
1 0 0
假设还存在标题和索引。
如何在这里使用df.apply()方法?
答案 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