我尝试设置一个数据框,该数据框包含一个称为频率的列。 此列应显示每行数据框的特定列中出现该值的频率。像这样:
Index Category Frequency
0 1 1
1 3 2
2 3 2
3 4 1
4 7 3
5 7 3
6 7 3
7 8 1
这只是一个例子
我已经用value_counts()尝试过,但是我只在出现的数字的最后一行收到一个值。 在这个例子中
Index Category Frequency
0 1 1
1 3 N.A
2 3 2
3 4 1
4 7 N.A
5 7 N.A
6 7 3
7 8 1
非常重要的一点是,该列与数据框的行数相同,最好追加到同一数据框
答案 0 :(得分:1)
df['Frequency'] = df.groupby('Category').transform('count')
答案 1 :(得分:0)
您可以使用分组方式,如下所示
df.groupby("Category") \
.apply(lambda g: g.assign(frequency = len(g))) \
.reset_index(level=0, drop=True)
答案 2 :(得分:0)
df['Frecuency']=df['Category'].map(df['Category'].value_counts())
df['Frecuency']=df['Category'].replace(df['Category'].value_counts())
输出:
Index Category Frecuency
0 0 1 1
1 1 3 2
2 2 3 2
3 3 4 1
4 4 7 3
5 5 7 3
6 6 7 3
7 7 8 1
详细信息
df['Category'].value_counts()
7 3
3 2
4 1
1 1
8 1
Name: Category, dtype: int64
使用value_counts
得到一个序列,其中index
是类别的元素,而values
是计数。因此,您可以使用map或pandas.Series.replace创建一个category
值替换为计数中的值的序列。最后将此系列分配到frequency
列