python - Python excel根据其他列的组合计算一列的值数
问题描述
我有这个 excel 表,它具有以下示例数据(底部编辑部分中的文本格式数据):
我想做的是:
- 对于每个(语言、供应商、文件名),计算得分值的总数(不是得分的总和,而是得分的总数)。所以类似于这个(底部编辑部分中的文本格式数据):
- 对于每个 (language,vendor,filename),计算 score 值高于 0.6 的总计数(不是总分,而是总分)
在我的 python 代码中,我可以使用以下方法将 excel 文件读入 pandas 数据框:
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
def read_scores_excel():
df = pd.read_excel('scores.xlsx', sheet_name='scores')
print("Column headings:")
print(df.columns)
languages = df['language']
vendor_name = df['vendor']
file_anme = df['filename']
score = df['score']
if __name__ == '__main__':
read_scores_excel()
但我无法进一步实现逻辑。如何实现逻辑以便获得计数值?
编辑:
文本中的示例输入数据:
vendor filename language score
Vendor 1 File 1 chinese 0.67717278
Vendor 1 File 1 chinese 0.644506991
Vendor 1 File 1 chinese 0.999999523
Vendor 1 File 1 chinese 0.756420255
Vendor 1 File 1 chinese 0.737005472
Vendor 2 File 2 Japanese 0.637181938
Vendor 2 File 2 Japanese 0.756420255
Vendor 2 File 2 Japanese 0.737005472
Vendor 2 File 2 Japanese 0.637181938
Vendor 2 File 1 chinese 0.637181938
Vendor 3 File 1 chinese 0.637181938
Vendor 3 File 1 chinese 0.737005472
Vendor 3 File 3 English 0.637181938
Vendor 3 File 3 English 0.756420255
Vendor 3 File 3 English 0.737005472
Vendor 3 File 3 English 0.637181938
文本中的示例输出数据:
Chinese Vendor 1 File 1 190
Chinese Vendor 1 File 2 187
Chinese Vendor 2 File 1 245
Chinese Vendor 2 File 2 225
Japnese Vendor 1 File 1 245
Japnese Vendor 1 File 3 212
English Vendor 1 File 1 245
English Vendor 3 File 3 245
解决方案
以下应该可以解决问题:
df.groupby(['language', 'vendor','filename']) \
.agg(score_count=('score', 'count'))
例如,
import pandas as pd
test_df = pd.DataFrame(
data=[
('Vendor 1', 'File 1', 'chinese', 0.67717278),
('Vendor 1', 'File 1', 'chinese', 0.737005472),
('Vendor 2', 'File 2', 'Japanese',0.637181938),
],
columns=['vendor', 'filename', 'language', 'score']
)
print(test_df.groupby(['language', 'vendor','filename']).agg(score_count=('score', 'count')))
输出将是:
score_count
language vendor filename
Japanese Vendor 2 File 2 1
chinese Vendor 1 File 1 2
推荐阅读
- plsql - 如何编写 Plsql 存储过程
- javascript - 使用 wasm 数组所需的最少代码量是多少
- ios - 将 Swift 中的 Azure B2C 与本机登录屏幕集成
- c++ - 函数重载没有意义吗?
- bash - Hive 使用 HIVE CONCATENATE 合并所有分区
- python - Visual Studio Poll Django 示例执行顺序
- mongodb - ubuntu - 无法远程连接到 mongodb
- angularjs - 未调用 AngularJS 指令链接函数
- ios - Firebase 实时数据库帖子
- distributed-database - Syncer所在的机器坏了,使用TiDB时syncer.meta文件目录丢失