You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python高效处理33.8万行数据:合并重复行并生成SSS值统计列

高效处理338000行数据的分组合并方案

针对你需要合并重复行、将SSS列的唯一值转换为统计列的需求,用Pandas的矢量化操作可以高效完成,完全适配30万+行的数据量,避免低效的循环操作。

步骤说明与代码实现

首先确保你已经安装了Pandas:

pip install pandas

然后执行以下代码:

import pandas as pd

# 读取数据(假设是空格分隔的文本/CSV,根据实际格式调整sep参数)
df = pd.read_csv("your_input_data.csv", sep="\s+")

# 核心操作:分组统计+转宽表
# 按aaa/bbb/ccc/SSS分组统计出现次数,再将SSS的唯一值转为列,缺失值填充0
result_df = df.groupby(["aaa", "bbb", "ccc", "SSS"]).size().unstack(fill_value=0).reset_index()

# 保存结果(同样按空格分隔,可按需调整sep)
result_df.to_csv("your_output_data.csv", sep=" ", index=False)

代码解释

  • groupby(["aaa", "bbb", "ccc", "SSS"]).size():按前三个列和SSS列分组,统计每组的行数(即该SSS值在当前aaa/bbb/ccc组合中出现的次数)。这一步是Pandas中效率极高的矢量化操作,比循环快几个数量级。
  • .unstack(fill_value=0):将SSS列的唯一值转换为新的列,原来的分组计数对应填充到新列中,没有出现的SSS值用0填充。
  • .reset_index():把作为索引的aaa/bbb/ccc重新转为普通列,和期望的输出格式一致。

效果验证

用你提供的示例数据测试,执行后得到的结果完全符合预期:

aaabbbcccS1S2S3S4
1mmmqq1001
2kkkaa0010
3bbbee1101
4xxxtt0010

性能优化提示

如果你的数据量接近内存上限,可以尝试以下优化:

  • 读取数据时指定列类型,比如dtype={"aaa": int, "bbb": str, "ccc": str, "SSS": str},减少内存占用。
  • 若不需要保留原数据,可在处理过程中释放内存:del df后执行gc.collect()。

内容的提问来源于stack exchange,提问作者Nirmine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:48:17