简体   繁体   English

对于列中的相似值,添加新列频率

[英]For similar value in column add new column frequence

I have a dataframe :我有一个数据框:

Id  age number 
1    35   7
5    76   9
1    15   0
2    10   4
5    43   8

What i need to get is :我需要得到的是:

Id  age  number freq
1   35    7     2
5   76    9     2
1   15    0     1
2   10    4     1
5   43    8     1

Add a new colum freq , for each value in a column , we takes all rows with same value in ID and count rows where the value of cat is less.添加一个新的 colum freq ,对于列中的每个值,我们取 ID 中具有相同值的所有行,并计算 cat 值较小的行。

If need counter in descending order use GroupBy.cumcount :如果需要按降序排列的计数器,请使用GroupBy.cumcount

df['freq'] = df.groupby('Id').cumcount(ascending=False).add(1)

But if need counts values by Id use GroupBy.transform with DataFrameGroupBy.size , output is different:但是如果需要按Id使用GroupBy.transformDataFrameGroupBy.size计算值,输出是不同的:

df['freq'] = df.groupby('Id')['Id'].transform('size')

Alternative with Series.map and Series.value_counts :替代Series.mapSeries.value_counts

df['freq'] = df['Id'].map(df['Id'].value_counts())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM