获取pandas DataFrame中某一行的最大值的列名称
发布于 2021-01-29 16:39:38
在DataFrame中
import pandas as pd
df=pd.DataFrame({'col1':[1,2,3],'col2':[3,2,1],'col3':[1,1,1]},index= ['row1','row2','row3'])
print df
col1 col2 col3
row1 1 3 1
row2 2 2 1
row3 3 1 1
我想获取某一行中具有最大值的单元格的列名称。
所需的输出为(以伪代码):
get_column_name_for_max_values_of(row2)
>['col1','col2']
最简洁的表达方式是什么
get_column_name_for_max_values_of(row2)
?
关注者
0
被浏览
223
1 个回答
-
如果不重复,则可以使用
idxmax
,但它仅返回max
值的第一列:print (df.idxmax(1)) row1 col2 row2 col1 row3 col1 dtype: object def get_column_name_for_max_values_of(row): return df.idxmax(1).ix[row] print (get_column_name_for_max_values_of('row2')) col1
但重复使用
boolean indexing
:print (df.ix['row2'] == df.ix['row2'].max()) col1 True col2 True col3 False Name: row2, dtype: bool print (df.ix[:,df.ix['row2'] == df.ix['row2'].max()]) col1 col2 row1 1 3 row2 2 2 row3 3 1 print (df.ix[:,df.ix['row2'] == df.ix['row2'].max()].columns) Index(['col1', 'col2'], dtype='object')
功能是:
def get_column_name_for_max_values_of(row): return df.ix[:,df.ix[row] == df.ix[row].max()].columns.tolist() print (get_column_name_for_max_values_of('row2')) ['col1', 'col2']