【问题标题】:sum of the n largest values in according to column value根据列值的 n 个最大值的总和
【发布时间】:2020-07-21 20:53:05
【问题描述】:

actual data head我遇到了以下问题, image is my dataframe

图像是我的数据框,其中州列表很长,其中包括美国的不同州作为索引,其他 2 列包含有关其中的县和 2010 年人口普查的信息。

我的目标是只查看每个州人口最多的三个县,人口最多的三个州是什么(按人口最多到最少的顺序)?使用CENSUS2010POP。 此函数应返回字符串值列表。

df = pd.DataFrame({'State': ['A', 'A','A','A','A','B','B','B','B','B','B','C','C','C','C','C', 'D','D', 'D', 'D'],
               'County': ['Aa', 'Ab','Ac','Ad', 'Ae', 'Ba','Ba','Bb','Bc','Bd','Be','Ca','Cb','Cc','Cd','Ce','Da','Db','Dc','Dd'],
               'Population': [25,35,45,60,12,80,45,60,20,30,14,65,87,65,13,29,45,60,75,80]})

【问题讨论】:

  • 您可以通过例如发布您的数据框吗? df.head 作为代码,而不是显示链接?
  • 我做到了,如果可以,请告诉我。我的任务是“只查看每个州人口最多的三个县,人口最多的三个州是什么(按人口最多到最少的顺序)?使用 CENSUS2010POP。这个函数应该返回一个字符串值列表。”跨度>
  • 请阅读How to make good reproducible pandas examples。如果您发布我们可以轻松复制的代码而不是图像,我们可以更轻松地为您提供帮助。另外,请尝试使用更具描述性的标题。
  • 您好,感谢您的建议。我是新来的,所以不知道。我做到了。你能检查一下好吗?你能帮我解决这个问题吗?

标签: python pandas dataframe for-loop data-science


【解决方案1】:
state_group=df.groupby(['State'])['Population'].nlargest(3).sum(level=0)
state_group_largest3=state_group.nlargest(3)

print (state_group)的输出,计算一个州最大的3个县的总和:

State
A    140 # because 140=35+45+60, which are the 3 largest counties in A
B    185
C    217
D    215
Name: Population, dtype: int64

print (state_group_nlargest) 的输出为您提供人口最多的三个州。

State
C    217
D    215
B    185
Name: Population, dtype: int64

我想你知道所有相关的python函数(在这种情况下groupby, nlargest, sum,有时你只需要以一种合乎逻辑的方式应用它们:)

【讨论】:

  • 它有 3 列 STNAME、CTYNAME 和 CENSUS2010POP。我得到了单一状态的答案,但我不知道如何遍历 STNAME 列中的所有值。并将这些总和值存储在新列中
  • 我完全理解这项任务。但请将您的数据发布为在您的问题中,而不是图像或链接,以便人们可以测试他们的答案并更好地帮助您。
  • 我做到了。如果您理解我的问题,请让它运行。
  • 谢谢,请看我编辑的答案。而且我还建议您更改标题以使其更具相关性,例如,“根据列值的 n 个最大值的总和”(人们通常不会点击不特定的标题,这就是为什么您的回复很少)。
  • 非常感谢这个解决方案。我会尽力回复你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-26
  • 1970-01-01
相关资源
最近更新 更多