栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Pandas DataFrame中找到所有最大值的索引

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Pandas DataFrame中找到所有最大值的索引

以下是采用不同数据结构的信息:

In [8]: df = pd.Dataframe({'cat1':[0,3,1], 'cat2':[2,0,1], 'cat3':[2,1,0]})In [9]: dfOut[9]:    cat1  cat2  cat30     0     2     21     3     0     12     1     1     0[3 rows x 3 columns]In [10]: rowmax = df.max(axis=1)

最大值由True值指示:

In [82]: df.values == rowmax[:,None]Out[82]: array([[False,  True,  True],       [ True, False, False],       [ True,  True, False]], dtype=bool)

np.where

返回上面的Dataframe为True的索引。

In [84]: np.where(df.values == rowmax[:,None])Out[84]: (array([0, 0, 1, 2, 2]), array([1, 2, 0, 0, 1]))

第一个数组指示的索引值

axis=0
,第二个数组指示的索引值
axis=1
。每个数组中有5个值,因为有五个位置为True。


您可以

itertools.groupby
用来构建发布的列表列表,尽管鉴于上述数据结构,也许您不需要这样做:

In [46]: import itertools as ITIn [47]: import operatorIn [48]: idx = np.where(df.values == rowmax[:,None])In [49]: groups = IT.groupby(zip(*idx), key=operator.itemgetter(0))In [50]: [[df.columns[j] for i, j in grp] for k, grp in groups]Out[50]: [['cat1', 'cat1'], ['cat2'], ['cat3', 'cat3']]


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号