Python数据框:如何返回列中的出现次数?

我正在处理一个大型csv文件,该文件具有看起来像这样的信息

id      year   decade  code  type
3366    2014    2010    EM  Chemical
3366    2014    2010    EM  Chemical
3366    2014    2010    EM  Chemical
3366    2014    2010    EM  Chemical
3366    2014    2010    EM  Chemical
427     1972    1970    DR  Coastal Storm
337     1972    1970    DR  Coastal Storm
337     1972    1970    DR  Coastal Storm

我想按“ id”列中唯一身份出现的次数进行排序。我想要的结果看起来像

id      year   decade  code  type          count
3366    2014    2010    EM  Chemical        5
427     1972    1970    DR  Coastal Storm   1
337     1972    1970    DR  Coastal Storm   2

但是我试图解决类似问题

id      year   decade  code  type           count
3366    2014    2010    EM  Chemical        5
3366    2014    2010    EM  Chemical        5
3366    2014    2010    EM  Chemical        5
3366    2014    2010    EM  Chemical        5
3366    2014    2010    EM  Chemical        5
427     1972    1970    DR  Coastal Storm   1
337     1972    1970    DR  Coastal Storm   1
337     1972    1970    DR  Coastal Storm   2

我尝试通过尝试做到这一点

df['count']=df.groupby('id').transform('count')

但是我总是收到错误消息

ValueError: Wrong number of items passed 18,placement implies 1

是否有更好的方法来实现这一目标?

pu1188 回答:Python数据框:如何返回列中的出现次数?

format_string = '%Y-%m-%dT%H:%M:%S%z'
d = datetime.strptime('2019-11-05T00:00:00+0000',format_string)
  • df.groupby(list(df.columns)).size().reset_index().rename(columns={0:'count'}) 将使您有所作为,但会创建一个多级索引
  • .size()将删除包含在名为0的列中的计数的多级索引。
  • .reset_index()将重命名此列以计数

您可以使用转换,但请确保传递与数据帧相同长度的序列。您可以通过将.rename(columns = {0:'count'})添加到groupby来做到这一点,但是您的任何列都可以:

['year']
,

第一个所需的解决方案:

data = data.groupby(['id','year','decade','code','type']).id.count()
data
id    year  decade  code  type         
337   1972  1970    DR    Coastal Storm    2
427   1972  1970    DR    Coastal Storm    1
3366  2014  2010    EM    Chemical         5
Name: id,dtype: int64

第二次:

data['count'] = data.groupby(['id','type']).id.transform('count')
data
id  year    decade  code    type    count
0   3366    2014    2010    EM  Chemical    5
1   3366    2014    2010    EM  Chemical    5
2   3366    2014    2010    EM  Chemical    5
3   3366    2014    2010    EM  Chemical    5
4   3366    2014    2010    EM  Chemical    5
5   427 1972    1970    DR  Coastal Storm   1
6   337 1972    1970    DR  Coastal Storm   2
7   337 1972    1970    DR  Coastal Storm   2

数据:

id;year;decade;code;type
3366;2014;2010;EM;Chemical
3366;2014;2010;EM;Chemical
3366;2014;2010;EM;Chemical
3366;2014;2010;EM;Chemical
3366;2014;2010;EM;Chemical
427;1972;1970;DR;Coastal Storm
337;1972;1970;DR;Coastal Storm
337;1972;1970;DR;Coastal Storm

import pandas as pd
data = pd.read_clipboard(sep=';')
本文链接:https://www.f2er.com/3147709.html

大家都在问