我有一个看起来像这样的 csv:
CompanyName High Priority QualityIssue
Customer1 Yes User
Customer1 Yes User
Customer2 No User
Customer3 No Equipment
Customer1 No Neither
Customer3 No User
Customer3 Yes User
Customer3 Yes Equipment
Customer4 No User
我想计算 CompanyName 中的每个实例在整个文件中出现了多少次,并按出现次数递减排序,但只打印一次 CompanyName:
例如,使用这段代码:
df['count'] = df.groupby('CompanyName'['CompanyName'].transform(pd.Series.value_counts)
df.sort('count', ascending=False)
我得到:
Out:
CompanyName HighPriority QualityIssue count
5 Customer3 No User 4
3 Customer3 No Equipment 4
7 Customer3 Yes Equipment 4
6 Customer3 Yes User 4
0 Customer1 Yes User 3
4 Customer1 No Neither 3
1 Customer1 Yes User 3
8 Customer4 No User 1
2 Customer2 No User 1
我想要的是:
CompanyName count
Customer3 4
Customer1 3
Customer4 1
Customer2 1
有什么想法吗?
问题 2: 空行:
CompanyName High Priority QualityIssue
Customer1 Yes User
Customer1 Yes User
No User
Customer3 No Equipment
Customer1 No Neither
No User
Customer3 Yes User
Customer3 Yes Equipment
Customer4 No User
预期输出:
CompanyName count
Customer3 3
Customer1 3
2
Customer4 1
请您参考如下方法:
我想你可以跳过两行,直接写
# single columns
df.CompanyNames.value_counts()
# or
df['CompanyNames'].value_counts()
# or via Sriram solution
df.groupby(['CompanyNames']).size()
# Multiple columns
df.groupBy(['CompanyNames', 'HighPriority']).size()
Python: get a frequency count based on two columns (variables) in pandas dataframe
这应该会给你你想要的,而不是将计数附加为一列。
编辑
替换 Nan 值然后找到计数
df.CompanyNames = df.CompanyNames.fillna('unknown')
# or inline
df.CompanyNames.fillna('unknown', inplace=True)
然后用之前的代码总结一下
