所以,我有这样的数据:
0.0 25.0 50.0
12.3 3.45 9.34
4.97 6.81 5.61
9.14 4.62 10.3
我需要从行中获取最大值(我可以使用df.max()获得),但是,我在列中需要的结果是标题值。
结果如下:
0.0 25.0 50.0 res
12.3 3.45 9.34 0.0
4.97 6.81 5.61 25.0
9.14 4.62 10.3 50.0
我如何能做到这一点的熊猫?
答案 0 :(得分:3)
使用idxmax
df['New']=df.idxmax(axis=1)
df
Out[979]:
0.0 25.0 50.0 New
0 12.30 3.45 9.34 0.0
1 4.97 6.81 5.61 25.0
2 9.14 4.62 10.30 50.0
答案 1 :(得分:2)
使用NumPy的一种方法:
df['res'] = df.columns[df.values.argmax(1)]
索引一维数组(在本例中为列)通常是有效的:
df = pd.concat([df]*10**4, ignore_index=True)
%timeit df.columns[df.values.argmax(1)] # 914 µs per loop
%timeit df.idxmax(axis=1) # 47.5 ms per loop