熊猫-df.max(),多个最大值

时间:2020-01-23 18:35:57

标签: pandas dataframe

我想获取给定行的最大值和列名(现在先说第一行)。当存在多个最大值实例时会发生什么?

这是我尝试过的:

df2=pd.DataFrame({'brand A':[1], 'brand B':[3], 'brand C':[3]}, index=['statement 1']) 
result = df2.max(axis=1) 
result.index = df2.idxmax(axis=1) 
brand_name = result.index[0] 
brand_value = result[0] 
print (brand_name, brand_value)

返回:

('brand B', 3)

我想退回的东西

(('brand B', 3), ('brand C', 3))

1 个答案:

答案 0 :(得分:4)

您可以使用whereNaN所有不是行最大值的值。然后,简单的stack会将NaN丢弃为长格式

df2.where(df2.eq(df2.max(1), axis=0)).stack()
#statement 1  brand B    3.0
#             brand C    3.0
#dtype: float64