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

2025-03-13 09:12:00
admin
原创
42
摘要:问题描述: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1950  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1439  
  在企业运营过程中,跨部门协作效率的高低直接影响着项目的推进速度与质量,进而关乎企业的整体竞争力。PLM(产品生命周期管理)项目管理软件作为一种强大的工具,正逐渐在提升跨部门协作效率方面发挥着关键作用。它打破了部门之间的信息壁垒,优化了业务流程,为企业各部门之间的协同工作提供了有力支持。PLM项目管理软件打破信息壁垒信息...
plm合规性管理   17  
  PLM(Product Lifecycle Management)软件,即产品生命周期管理软件,旨在助力企业对产品从概念设计到退役处理的全生命周期进行有效管理。通过整合产品数据、流程以及人员,PLM软件能显著提升企业的创新能力、生产效率并降低成本。然而,PLM软件的实施并非易事,众多企业在落地过程中遭遇诸多挑战。要实现...
国内plm系统排名   19  
  研发过程的可视化对于企业提升效率、保障项目顺利推进至关重要。PLM(产品生命周期管理)系统作为整合产品全生命周期信息的重要工具,与甘特图相结合,能为研发过程可视化提供强大支持。通过对PLM系统支撑下甘特图的优化展现,可以让项目团队成员、管理层等清晰了解研发进度、资源分配等关键信息,从而做出更科学的决策。接下来,我们将详...
plm系统主要干什么的   16  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用