Python 将每个值的频率分配给具有新列的dataframe
我试图建立一个数据帧,对一个名为frequency的列进行计数。 此列应显示值在每行数据帧的特定列中出现的频率。大概是这样的:Python 将每个值的频率分配给具有新列的dataframe,python,pandas,dataframe,count,duplicates,Python,Pandas,Dataframe,Count,Duplicates,我试图建立一个数据帧,对一个名为frequency的列进行计数。 此列应显示值在每行数据帧的特定列中出现的频率。大概是这样的: Index Category Frequency 0 1 1 1 3 2 2 3 2 3 4 1 4 7 3 5 7 3
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
列的行数与数据帧的行数相同非常重要,最好附加到相同的数据帧中
df.groupby(“类别”)\
.apply(λg:g.assign(频率=len(g)))\
.reset_索引(级别=0,下降=True)
使用:
或:
输出:
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\u counts
可以得到一个系列,其索引
是类别的元素和值
是伯爵。因此,您可以使用或创建一个包含类别
值的系列由计数中的数字替换。最后,将此序列分配到频率列df['frequency']=df.groupby('Category')。transform('count'))
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