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

如何使用Pandas从键值对格式TXT数据中提取列

将重复键值对的单列文本转换为结构化DataFrame

问题场景

你用pd.read_table()读取的TXT文件数据呈现为单列多行的键值对形式,每4行对应一条完整记录(包含Date、Temperature、Humidity、CO2 level四个字段),需要将其转换为字段作为列、每条记录作为行的标准DataFrame。

实现步骤与代码

以下是高效的转换方案:

  1. 读取原始数据
    先读取文件得到单列的原始DataFrame:

    import pandas as pd
    
    # 替换为你的实际文件路径
    df_raw = pd.read_table('data.txt', header=None, names=['raw'])
    
  2. 拆分键和值
    将每行的键值对拆分为独立的两列:

    # 按': '(冒号加空格)拆分,生成键、值两列
    df_split = df_raw['raw'].str.split(': ', expand=True)
    df_split.columns = ['key', 'value']
    
  3. 分组并透视成结构化数据
    利用索引整数除法给每条记录分配分组ID,再通过透视表转换为目标格式:

    # 每4行划分为一组,生成分组标识
    df_split['group_id'] = df_split.index // 4
    
    # 透视表转换:分组ID作为行,字段名作为列,对应值填充
    df_final = df_split.pivot(index='group_id', columns='key', values='value').reset_index(drop=True)
    
    # 可选:调整列顺序与预期一致
    df_final = df_final[['Date', 'Temperature', 'Humidity', 'CO2 level']]
    

最终效果

运行后df_final将呈现如下结构化格式:

DateTemperatureHumidityCO2 level
23:1520 C4014
23:2028 C4518
23:2535 C3520
23:3022 C5212

补充提示

  • 该方案仅适用于每组字段顺序固定、数量一致的情况;
  • 拆分时必须用: 作为分隔符,避免误拆时间字段里的冒号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:05:21