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

如何用Python将.dat文件中‘编号:值’格式的数据加载至DataFrame(仅保留值)

Python加载属性编号:值格式的.dat文件到DataFrame(仅保留数值)

嘿,我来帮你搞定这个问题!要把这种属性编号:值格式的.dat文件数据导入Pandas DataFrame,只保留数值部分,其实分几步就能轻松搞定。我给你两种常用方案,你可以根据自己的文件结构来选:

方法一:逐行读取手动处理(灵活适配复杂结构)

如果你的.dat文件里有空行、注释,或者值本身可能包含冒号,这种方法更稳妥:

import pandas as pd

# 初始化字典存储数据,键是属性名,值是对应数值列表
data = {}

# 打开并读取文件
with open('your_data.dat', 'r', encoding='utf-8') as file:
    for line in file:
        # 去掉首尾空格和换行符
        cleaned_line = line.strip()
        # 跳过空行
        if not cleaned_line:
            continue
        
        # 只按第一个冒号分割,避免值里的冒号破坏结构
        attr_part, value_part = cleaned_line.split(':', 1)
        
        # 尝试把值转换成数值类型(优先整数,其次浮点数)
        try:
            num_value = float(value_part)
            if num_value.is_integer():
                num_value = int(num_value)
        except ValueError:
            # 转换失败就保留原字符串(如果不需要可以设为NaN)
            num_value = value_part
        
        # 把数据存入字典,用属性编号作为列名
        col_name = f'attribute_{attr_part}'
        if col_name not in data:
            data[col_name] = []
        data[col_name].append(num_value)

# 把字典转换成DataFrame
df = pd.DataFrame(data)
print(df)

这段代码的优势:

  • 自动跳过空行,避免报错
  • 只分割第一个冒号,完美适配值里包含冒号的情况
  • 智能转换数值类型,整数、浮点数自动识别,无法转换的内容保留原样(也可以改成设为NaN)

方法二:用Pandas的read_csv快速读取(适合规整的文件)

如果你的.dat文件每行严格是属性编号:值,没有多余内容,用read_csv会更简洁:

import pandas as pd

# 直接读取文件,指定分隔符为冒号,无表头
raw_df = pd.read_csv(
    'your_data.dat',
    sep=':',
    header=None,
    names=['attribute_id', 'value'],
    encoding='utf-8'
)

# 把值转换成数值类型,无法转换的保留原内容(或设为NaN)
raw_df['value'] = pd.to_numeric(raw_df['value'], errors='ignore')

# 如果想把属性编号作为列名,转置即可
final_df = raw_df.set_index('attribute_id').T
print(final_df)

小提示:

  • 如果文件里有非属性:值的行(比如注释行),可以先过滤:raw_df = raw_df[raw_df['attribute_id'].str.contains('\d+')](假设属性编号是数字)
  • 要是想把无法转换的非数值内容设为NaN,把errors='ignore'改成errors='coerce'就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:29:34