【问题标题】:How to 'group by' to get the frequency counts as a new column?如何“分组”以将频率计数作为新列?
【发布时间】:2020-09-03 22:42:35
【问题描述】:

我这样做了,但我没有得到预期的结果,因为它没有按要求分组

df1=pd.read_csv('https://cocl.us/sanfran_crime_dataset')
df1.drop(df1.columns.difference(['PdDistrict']),1,inplace=True)
df1=df1.rename(columns={'PdDistrict':'Neighborhood'})
df1['Counts']=df1.groupby('Neighborhood')['Neighborhood'].count() 
df1

第 4 行代码有什么问题?如果我不将 groupby 分配为列,则 groupby 可以正常工作,但是当我将其分配为列时,它甚至不起作用。

预期输出

【问题讨论】:

  • 输入您的代码、数据和输出。不要不要将它们粘贴为图片。
  • 我已经粘贴了我使用的代码。请帮忙!
  • 原表行数为150500,结果行数为9,你期望它们如何匹配?
  • 当我简单地这样做时: df1.groupby('Neighborhood')['Neighborhood'].count() 它将 150500 行分组为 9 行,并在它旁边显示我想要的频率.但是当我将此操作分配给添加名为“Counts”的新列时,我无法做到。
  • 您希望如何将 150,500 行表和 9 行表并排组合?

标签: python python-3.x pandas dataframe pandas-groupby


【解决方案1】:

为什么不把第 4 行写成

df1 = df1.groupby('Neighborhood')['Neighborhood'].count()

如果您编写df1['Counts'],则您正在向现有数据帧添加一个新列,并且新列的长度(作为groupby 的结果)与df1 的索引长度不匹配.

【讨论】:

  • 但这并没有给我输出中的索引值。
  • @BishwasBasnet 您要保留哪些索引值?
  • 它的序列号从'0'垂直开始。
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多