使用 Pandas 查找列的最大值并返回相应的行值

2025-03-13 09:12:00
admin
原创
76
摘要:问题描述:Country Place Value US NewYork 562 US Michigan 854 US Illinois 356 UK London 778 UK Manchester 51...

问题描述:

Country       Place  Value
US       NewYork     562
US       Michigan    854
US       Illinois    356
UK       London      778
UK       Manchester  512
Spain    Madrid      509
India    Mumbai      196
US       Kansas      894
UK       Liverpool   796
Spain    Barcelona   792

我尝试使用 Pandas 来找到具有最大值的Country和。Place

返回最大值:

data.groupby(['Country','Place'])['Value'].max()

但是我如何获取对应的Country名称Place呢?


解决方案 1:

假设df有一个唯一索引,这将给出具有最大值的行:

In [34]: df.loc[df['Value'].idxmax()]
Out[34]: 
Country        US
Place      Kansas
Value         894
Name: 7

请注意,idxmax返回索引标签。因此,如果 DataFrame 在索引中有重复项,则标签可能无法唯一地标识该行,因此df.loc可能会返回多行。

因此,如果df没有唯一索引,则必须先使索引唯一,然后再执行上述操作。根据 DataFrame,有时您可以使用stackset_index使索引唯一。或者,您可以简单地重置索引(这样行就会重新编号,从 0 开始):

df = df.reset_index()

解决方案 2:

df[df['Value']==df['Value'].max()]

这将返回具有最大值的整行

解决方案 3:

我认为返回具有最大值的行的最简单方法是获取其索引。argmax()可用于返回具有最大值的行的索引。

index = df.Value.argmax()

现在可以使用索引来获取特定行的特征:

df.iloc[df.Value.argmax(), 0:2]

解决方案 4:

国家和地点是系列的索引,如果不需要索引,可以设置as_index=False

df.groupby(['country','place'], as_index=False)['value'].max()

编辑:

似乎您想要每个国家/地区中具有最大值的地方,以下代码将满足您的要求:

df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))

解决方案 5:

您可以使用:

print(df[df['Value']==df['Value'].max()])

解决方案 6:

使用index的属性DataFrame。请注意,我没有在示例中输入所有行。

In [14]: df = data.groupby(['Country','Place'])['Value'].max()

In [15]: df.index
Out[15]: 
MultiIndex
[Spain  Manchester, UK     London    , US     Mchigan   ,        NewYork   ]

In [16]: df.index[0]
Out[16]: ('Spain', 'Manchester')

In [17]: df.index[1]
Out[17]: ('UK', 'London')

您还可以通过该索引获取值:

In [21]: for index in df.index:
    print index, df[index]
   ....:      
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562

编辑

抱歉,我误解了您的意思,请尝试以下操作:

In [52]: s=data.max()

In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854

解决方案 7:

为了打印具有最大值的国家和地点,请使用以下代码行。

print(df[['Country', 'Place']][df.Value == df.Value.max()])

解决方案 8:

使用DataFrame.nlargest

为此,专门的方法是在后台nlargest使用algorithm.SelectNFrame,这是一种高效的方法:sort_values().head(n)

   x  y  a  b
0  1  2  a  x
1  2  4  b  x
2  3  6  c  y
3  4  1  a  z
4  5  2  b  z
5  6  3  c  z
df.nlargest(1, 'y')

   x  y  a  b
2  3  6  c  y

解决方案 9:

import pandas

df 是您创建的数据框。

使用命令:

df1=df[['Country','Place']][df.Value == df['Value'].max()]

这将显示值最大的国家和地区。

解决方案 10:

查找列中的最大值的解决方案:

df.ix[df.idxmax()]

,也是最小值:

df.ix[df.idxmin()]

解决方案 11:

我建议使用nlargest以获得更好的性能和更短的代码。导入pandas

df[col_name].value_counts().nlargest(n=1)

解决方案 12:

我在尝试使用 pandas 导入数据时遇到了类似的错误,我的数据集的第一列在单词开头之前有空格。我删除了空格,一切正常!!

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3998  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2749  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   85  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   96  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   83  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用