如何获取最大列值计数。

huangapple go评论138阅读模式
英文:

How to get the max column values count

问题

以下是您期望的输出:

  1. item_name count
  2. Steak Salad Bowl 2
  3. Meat Salad Bowl 1
英文:

test dataframe is below

  1. test=pd.DataFrame({'item_name':['Steak Salad Bowl','Steak Salad Bowl','Barbacoa Salad Bowl','Meat Salad Bowl'],'item_price':[9.39,9.39,9.19,9.39]})
  2. grps = [grp for _, grp in test.groupby('item_name', sort=False)]
  3. print(grps[0],grps[0].shape[0])

My Expected out

  1. item_name count
  2. Steak Salad Bowl 2
  3. Meat Salad Bowl 1

答案1

得分: 1

使用boolean indexing来根据max值进行筛选,然后使用Series.value_counts,对于DataFrame使用DataFrame.rename_axisDataFrame.reset_index

  1. df = (test.loc[test['item_price'].eq(test['item_price'].max()), 'item_name']
  2. .value_counts()
  3. .rename_axis('item_name')
  4. .reset_index(name='count'))
  5. print(df)
  6. item_name count
  7. 0 Steak Salad Bowl 2
  8. 1 Meat Salad Bowl 1

或者对于计数,使用GroupBy.size

  1. df = (test[test['item_price'].eq(test['item_price'].max())]
  2. .groupby('item_name')
  3. .size()
  4. .reset_index(name='count'))
  5. print(df)
  6. item_name count
  7. 0 Meat Salad Bowl 1
  8. 1 Steak Salad Bowl 2

以上是代码的翻译部分。

英文:

Use boolean indexing for filtering by max values, then Series.value_counts and for DataFrame DataFrame.rename_axis with DataFrame.reset_index:

  1. df = (test.loc[test['item_price'].eq(test['item_price'].max()), 'item_name']
  2. .value_counts()
  3. .rename_axis('item_name')
  4. .reset_index(name='count'))
  5. print (df)
  6. item_name count
  7. 0 Steak Salad Bowl 2
  8. 1 Meat Salad Bowl 1

Or for count use GroupBy.size:

  1. df = (test[test['item_price'].eq(test['item_price'].max())]
  2. .groupby('item_name')
  3. .size()
  4. .reset_index(name='count'))
  5. print (df)
  6. item_name count
  7. 0 Meat Salad Bowl 1
  8. 1 Steak Salad Bowl 2

答案2

得分: 1

使用nlargest(n)

  1. test.nlargest(1, columns='item_price', keep='all')['item_name'].value_counts()

输出:

  1. Steak Salad Bowl 2
  2. Meat Salad Bowl 1
  3. Name: item_name, dtype: int64
英文:

Using nlargest(n):

  1. test.nlargest(1, columns='item_price', keep='all')['item_name'].value_counts()

Output:

  1. Steak Salad Bowl 2
  2. Meat Salad Bowl 1
  3. Name: item_name, dtype: int64

答案3

得分: 1

  1. 使用 value_counts() head() reset_index() rename()

pd.DataFrame(test['item_name'].value_counts().head(2).reset_index().rename(columns = {'index': 'item_name', 'item_name' : 'count'}))

  1. 输出
  1. item_name count

0 牛排沙拉碗 2
1 巴巴科亚沙拉碗 1

  1. <details>
  2. <summary>英文:</summary>
  3. Using value_counts() and head() and reset_index() and rename()

pd.DataFrame(test['item_name'].value_counts().head(2).reset_index().rename(columns = {'index': 'item_name', 'item_name' : 'count'}))

  1. Output
  1. item_name count

0 Steak Salad Bowl 2
1 Barbacoa Salad Bowl 1

  1. </details>

huangapple
  • 本文由 发表于 2020年1月3日 14:07:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/59573930.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定