2024-04-19 01:28:01 发布
网友
我有一个数据集
|category| cat a cat b cat a
我希望能够返回类似的内容(显示独特的值和频率)
category | freq | cat a 2 cat b 1
使用groupby和count:
groupby
count
In [37]: df = pd.DataFrame({'a':list('abssbab')}) df.groupby('a').count() Out[37]: a a a 2 b 3 s 2 [3 rows x 1 columns]
查看联机文档:http://pandas.pydata.org/pandas-docs/stable/groupby.html
还有^{}正如@DSM所评论的,这里有很多剥猫皮的方法
In [38]: df['a'].value_counts() Out[38]: b 3 a 2 s 2 dtype: int64
如果要将频率添加回原始数据帧,请使用transform返回对齐的索引:
transform
In [41]: df['freq'] = df.groupby('a')['a'].transform('count') df Out[41]: a freq 0 a 2 1 b 3 2 s 2 3 s 2 4 b 3 5 a 2 6 b 3 [7 rows x 2 columns]
df.category.value_counts()
这一小行代码将为您提供所需的输出。
如果列名中有空格,则可以使用
df['category'].value_counts()
如果要应用于所有可以使用的列:
df.apply(pd.value_counts)
这将对每个列应用基于列的聚合函数(在本例中为值计数)。
使用
groupby
和count
:查看联机文档:http://pandas.pydata.org/pandas-docs/stable/groupby.html
还有^{} 正如@DSM所评论的,这里有很多剥猫皮的方法
如果要将频率添加回原始数据帧,请使用
transform
返回对齐的索引:这一小行代码将为您提供所需的输出。
如果列名中有空格,则可以使用
如果要应用于所有可以使用的列:
这将对每个列应用基于列的聚合函数(在本例中为值计数)。
相关问题 更多 >
编程相关推荐