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

使用Pandas读取TXT文件并统计唯一记录出现次数

多列唯一记录统计与Excel生成解决方案

问题背景

我有如下格式的TXT文件:

thi is    a junk data    line to be ignored abc xyz dsfgsrj
AFKSDNG-RBI 20200706    MARS        stu    base-1
AFKSDNG-UBI 20200706    JUPITER     uyt    base-2
AFKSDNG-ABI 20200706    MARS        stu    base-1
AFKSDNG-XBI 20200706    JUPITER     uyt    base-2
AFKSDNG-XBI 20200706    MARS        stx    base-1

该文件无表头,列间以任意数量空格分隔,需跳过第一行垃圾数据。统计规则:只要第3、4、5列中有一列不同,即视为唯一记录,比如示例中前两条MARS+stu+base-1算重复记录,最后一条MARS+stx+base-1是新记录,因此MARS相关的唯一组出现次数为2。
需求:统计唯一记录的出现次数,去重后生成Excel文件。现有代码仅能读取导出,无法实现计数。

修正后的实现代码

统计计数+去重导出

import pandas as pd

# 读取文件:处理任意多空格分隔,跳过第一行垃圾数据
df = pd.read_csv('CD202205.txt', engine='python', sep='\s+', header=None, skiprows=1)

# 按第3、4、5列(对应pandas索引2、3、4)分组,统计次数并保留其他列内容
count_result = df.groupby([2, 3, 4], as_index=False).agg(
    出现次数=('0', 'count'),  # 用任意列计数均可
    标识符=('0', 'first'),   # 保留第1列的首个值
    日期=('1', 'first')      # 保留第2列的首个值
)

# 调整列顺序,还原原始逻辑
count_result = count_result[['标识符', '日期', 2, 3, 4, '出现次数']]
# 可选:给列重命名,提升可读性
count_result.columns = ['标识符', '日期', '分组1', '分组2', '分组3', '出现次数']

# 导出到Excel
count_result.to_excel('统计结果.xlsx', index=False, sheet_name='统计数据')

仅去重不计数的简化代码

如果只需要去除重复记录,不需要统计次数,可直接用:

import pandas as pd

df = pd.read_csv('CD202205.txt', engine='python', sep='\s+', header=None, skiprows=1)
# 按第3、4、5列去重,保留每组第一条记录
deduped_df = df.drop_duplicates(subset=[2, 3, 4], keep='first')
deduped_df.to_excel('去重结果.xlsx', index=False, sheet_name='去重数据')

关键说明

  • 把原代码的sep='\s{3,}'改为sep='\s+',确保任意数量的空格都能被识别为分隔符,避免列解析错误。
  • groupby([2,3,4])明确指定分组依据,确保只要这三列有差异就视为不同记录,解决后续发现的分组错误问题。
  • agg方法同时完成计数和保留其他字段,避免丢失原始数据的关键信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:57:27