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

如何将无扩展名的SMS垃圾短信数据集导入Pandas DataFrame?

将SMS垃圾短信数据集转换为指定Pandas DataFrame的方法

原始数据集每行以ham或spam作为类别标签,后续为短信内容,标签与内容间以空白(空格/制表符)分隔。以下是两种可靠的转换方法:

方法一:利用Pandas的正则分隔读取

直接通过read_csv的正则分隔符,精准拆分标签与内容,效率更高:

import pandas as pd

# 读取文件,用正则匹配开头的ham/spam,仅拆分一次
df = pd.read_csv(
    'sms_spam_collection',  # 替换为你的数据集文件路径
    sep='^(ham|spam)\\s+',
    engine='python',
    header=None,
    usecols=[1, 2],  # 取分割后的类别列和内容列
    encoding='latin-1'  # 适配数据集的编码格式
)

# 设置指定列名
df.columns = ['Message Class', 'Messages']

# 清理内容首尾的多余空白
df['Messages'] = df['Messages'].str.strip()

方法二:逐行读取处理

适合需要自定义逻辑的场景,更直观:

import pandas as pd

data_rows = []
# 打开数据集文件,指定编码避免乱码
with open('sms_spam_collection', 'r', encoding='latin-1') as f:
    for line in f:
        line = line.strip()
        # 找到第一个空格的位置,拆分标签与内容
        split_pos = line.find(' ')
        msg_class = line[:split_pos]
        msg_content = line[split_pos+1:].strip()
        data_rows.append([msg_class, msg_content])

# 转换为目标格式的DataFrame
df = pd.DataFrame(data_rows, columns=['Message Class', 'Messages'])

执行完上述任意一种方法后,运行print(df.head())即可得到与指定格式一致的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:35:41