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

2025-03-13 09:12:00
admin
原创
40
摘要:问题描述: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1887  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1425  
  在制造业数字化转型的进程中,PLM(产品生命周期管理)系统、ERP(企业资源计划)系统、MES(制造执行系统)以及 CAD(计算机辅助设计)软件都扮演着至关重要的角色。然而,这些系统和软件各自独立运行时,往往难以发挥出最大的协同效应。实现 PLM 系统与 ERP、MES、CAD 的有效集成,成为提升企业整体竞争力、优化...
plm系统的主要功能模块   3  
  产品生命周期管理(PLM)作为一种先进的管理理念和技术,在电子与半导体行业正发挥着日益重要的作用。随着电子与半导体行业的快速发展,产品更新换代速度加快,市场竞争愈发激烈,企业面临着诸多挑战,如缩短产品上市时间、提高产品质量、降低成本等。而PLM的应用为企业应对这些挑战提供了有效的解决方案,展现出巨大的应用价值。提升产品...
plm项目   4  
  PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营中扮演着至关重要的角色。它整合了从产品概念设计到退役的全流程数据与流程,助力企业提升效率、降低成本并增强创新能力。随着科技的飞速发展以及企业需求的不断演变,未来十年 PLM 项目管理软件的发展充满了无限可能,值得深入探讨与预测。智能化与自动化趋势智能...
plm产品全生命周期管理   6  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用