pandas - 如何最终确定 value_counts
问题描述
我已经在我的数据中尝试过价值计数
df = pd.DataFrame({'TYPE':['BOY','GIRL','GIRL','GIRL','BOY','GIRL','BOY'],'GROUP':['A','D','F','D','C','C','E']})
我的结果应该是这样
TYPE A B C D E F
BOY 1 0 1 0 1 0
GIRL 0 0 1 2 0 1
TOTAL 1 0 2 2 1 1
我能得到什么
A 1
E 1
F 1
C 2
D 2
从我的代码
a = df.GROUP.value_counts(sort=False,ascending=False)
print(a)
解决方案
使用交叉表来获取频率,并从 Total 列中删除(因为您对此不感兴趣):
columns = ["A","B","C","D","E", "F"]
res = (pd.crosstab(df.TYPE, df.GROUP, margins=True, margins_name='Total')
.iloc[:,:-1]
.reindex(columns, axis=1, fill_value=0)
.rename_axis(None)
)
print(res)
GROUP A B C D E F
BOY 1 0 1 0 1 0
GIRL 0 0 1 2 0 1
Total 1 0 2 2 1 1
推荐阅读
- amazon-web-services - AWS Graphql 中的多对多关系问题
- docker - Docker 容器(用于弹性搜索)每次“[Qkskaso] 无法读取本地状态,正在退出...”时都会出现错误启动和退出
- android - 添加具有实时更新功能的 GeoJson(无跟踪)
- php - Mozilla Firefox 中的“资源被安全浏览阻止”问题
- ruby-on-rails - 避免在 ActiveRecord 中进行重复查询 - Ruby on Rails
- javascript - 在 JavaScript 中包含数组问题
- scala - 有没有办法在未来链中执行副作用,而不改变价值传播
- python-3.x - 如何将 int32 numpy 数组转换为 int16 numpy 数组?
- javascript - 如何修复与颜色混合的纹理?
- azure - 在 Azure 2.0 中对 Function 应用的每个请求之前执行一些代码