[英]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.transform
和DataFrameGroupBy.size
计算值,输出是不同的:
df['freq'] = df.groupby('Id')['Id'].transform('size')
Alternative with Series.map
and Series.value_counts
:替代
Series.map
和Series.value_counts
:
df['freq'] = df['Id'].map(df['Id'].value_counts())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.