【问题标题】:How to count a row with the most elements in a pandas dataframe [duplicate]如何计算熊猫数据框中元素最多的行[重复]
【发布时间】:2021-01-17 05:50:09
【问题描述】:

我有一个任务,我必须计算每个州的县数量,并在数据框中显示州最多的县,如下所示:

X = pd.DataFrame.from_dict({
    "SUMLEV": [40, 50, 50, 50, 50],
    "REGION": [3, 3, 3, 3, 3],
    "DIVISION": [6, 6, 6, 6, 6],
    "STATE": [1, 1, 1, 1, 1],
    "COUNTY": [0, 1, 3, 5, 7],
    "STNAME": ["Alabama", "Alabama", "Alabama", "Alabama", "Alabama"],
    "CTYNAME": ["Alabama", "Autauga County", "Baldwin County", "Barbour County", "Bibb County"]
})

>>> X
   SUMLEV  REGION  DIVISION  STATE  COUNTY   STNAME         CTYNAME
0      40       3         6      1       0  Alabama         Alabama
1      50       3         6      1       1  Alabama  Autauga County
2      50       3         6      1       3  Alabama  Baldwin County
3      50       3         6      1       5  Alabama  Barbour County
4      50       3         6      1       7  Alabama     Bibb County

到目前为止,我只根据 STNAME 对数据框进行排序,然后根据 CTYNAME 对数据框进行排序。此后,我计划计算每个县的行数,但我不确定该怎么做。 这就是我目前所拥有的

def answer_five() :
    census_df = df[df['SUMLEV'] == 50]
    census_df.groupby(['STNAME'])
    census_df.groupby([CTYNAME])

【问题讨论】:

  • 嘿,仅供参考,您最好包含使您的问题/问题可重现的代码。像这样附加数据和/或数据框的屏幕截图会使其他用户难以重现您的问题。请注意,因为这是您的第一个问题 :)
  • 谢谢!我会记住这一点;)

标签: python pandas dataframe


【解决方案1】:

我认为您正在寻找这样的东西:

X.groupby("STNAME")["COUNTY"].nunique().idxmax()

这将首先按州名称STNAME 对您的数据进行分组,因此您现在正在州级别进行分析。然后,通过抓取"COUNTY" 列,仅查看县(每个州),然后计算每个州 (nunique()) 的唯一县数。最后,您想要县数最多的州,因此idxmax() 将为您提供具有最高值的行的索引(在这种情况下,因为它是 groupby 的结果,它将是州名) .

【讨论】:

  • 很好地解释了代码。干得好!
  • X[(X.SUMLEV==50)].groupby("STNAME")['COUNTY'].sum().idxmax()
猜你喜欢
  • 2016-06-05
  • 2020-10-29
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2021-09-06
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多