PHP MySQL:如何逐行统计满足条件的列数量
嘿,这个需求其实很好实现,我给你两种常用的方案,看你用哪种更顺手:
方案一:用Pandas处理(适合结构化表格数据)
如果你的数据是标准的表格格式,用Pandas来处理会非常高效,尤其是数据量较大的时候:
import pandas as pd # 构造你的数据表(注意把原数据里的千分位逗号去掉,转成纯数值) data = { 'column1': [100, 7, 1], 'column2': [49, 5, 65], 'column3': [3, 51, 44], 'column4': [1980, 500, 37] } # 设置行索引为用户名 df = pd.DataFrame(data, index=['user1', 'user2', 'user3']) # 👉 核心逻辑:按行遍历,统计值<100的列数 # axis=1表示按行处理,(row < 100)会生成布尔数组,sum()把True转为1累加 result = df.apply(lambda row: (row < 100).sum(), axis=1) # 输出你要的格式 for user, count in result.items(): print(f"{user}:{count}")
小提示
如果你的原始数据里有1,980这种带千分位逗号的数值,记得先做格式转换:
# 去掉所有逗号并转为整数类型 df = df.replace(',', '', regex=True).astype(int)
方案二:纯Python实现(无需第三方库)
如果不想依赖任何第三方库,用原生的字典和循环就能搞定,适合小体量数据:
# 用字典存储每行数据(同样注意去掉千分位逗号) user_data = { 'user1': [100, 49, 3, 1980], 'user2': [7, 5, 51, 500], 'user3': [1, 65, 44, 37] } result = {} # 遍历每个用户的数值列表 for user, values in user_data.items(): count = 0 for val in values: if val < 100: count += 1 result[user] = count # 输出结果 for user, count in result.items(): print(f"{user}:{count}")
两种方法跑出来的结果都是你要的:user1:2、user2:3、user3:4,完美匹配需求~
内容的提问来源于stack exchange,提问作者follmer
相关产品推荐
相关产品推荐

