如何使用pandas正确创建DataFrame并统计年龄≥50的记录数
问题根因
你当前的写法直接把整段未解析的键值对字符串传入DataFrame构造器,最终只会生成1行1列的单值表格,单元格内存储完整的原始字符串,自然无法直接提取age字段做统计。你需要先把拼接格式的字符串解析成结构化的记录列表,再创建DataFrame。
实现方案
按如下流程处理即可:
- 先把原始字符串按逗号分割,得到所有独立的
key=xxx、age=xxx片段 - 按顺序成对提取每个key对应的age值,组装成
{"key": xxx, "age": xxx}格式的字典列表,这是Pandas可直接识别的结构化输入格式 - 基于解析后的记录创建DataFrame,将age字段转为整数类型后做条件统计
完整可运行代码如下:
import pandas as pd # 原始数据集 raw = {"data": "key=IAfpK, age=58, key=WNVdi, age=64, key=jp9zt, age=47, key=0Sr4C, age=68, key=CGEqo, age=76, key=IxKVQ, age=79, key=eD221, age=29, key=XZbHV, age=32, key=k1SN5, age=88"} # 解析字符串为结构化记录 fragments = [seg.strip() for seg in raw["data"].split(",")] records = [] for idx in range(0, len(fragments), 2): current_key = fragments[idx].split("=")[1] current_age = int(fragments[idx+1].split("=")[1]) records.append({"key": current_key, "age": current_age}) # 生成结构正确的DataFrame df = pd.DataFrame(records) # 统计age >= 50的记录总数 result = df[df["age"] >= 50].shape[0] print(f"age >= 50的记录总数:{result}")
运行后你会得到包含key、age两列的标准DataFrame,上述示例数据的统计结果为6。
内容的提问来源于stack exchange,提问作者Subhajit Nag
相关产品推荐
相关产品推荐

