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

如何使用Pandas将单行列键值对格式数据拆分转换为多列结构化数据

如何使用Pandas将单行列键值对格式数据拆分转换为多列结构化数据

看起来你现在手里的是一堆把所有元数据塞在单个字符串里的行,得把它们拆成规整的多列对吧?我来一步步教你怎么用Pandas搞定这个:

核心思路

每个文件里的目标字符串是Date=xxx; Time=xxx; ...这种键值对格式,我们要把它拆分成Date、Time等单独列,再把所有文件的数据整合到一起。

具体步骤与代码修改

1. 调整循环逻辑,处理单个文件的键值对拆分

原来的代码只是把原始文件内容塞进列表,现在我们要在循环里对每个文件的目标字符串做拆分处理:

processed_dfs = []
# 你指定的要保留的列
column_subset=['Date', 'Time', 'TracePoints', 'TSamp', 'TimeUnits', 'AmpToVolts', 'TraceMaxVolts', 'PTime', 'STime']

for f in csv_files:
    # 只读取第一行(因为后面的行你都要丢弃,这样更省内存)
    rf = pd.read_csv(f, nrows=1)
    # 提取那一行的键值对字符串(假设它在第一列)
    data_str = rf.iloc[0, 0]
    
    # 拆分字符串为键值对字典
    kv_pairs = data_str.split('; ')  # 按分号加空格分割每个键值对
    data_dict = {}
    for pair in kv_pairs:
        # 用split('=', 1)避免值里出现等号的情况(更健壮)
        key, value = pair.split('=', 1)
        data_dict[key] = value
    
    # 把字典转成DataFrame,只保留你需要的列
    structured_df = pd.DataFrame([data_dict])[column_subset]
    processed_dfs.append(structured_df)
    
    # 打印你需要的信息
    print('File Name:', f.split("\\")[-1])
    print('Processed Content:')
    display(structured_df)
    print()

2. 合并所有文件的处理结果

循环结束后,把所有处理好的小DataFrame合并成一个大的结构化DataFrame:

final_df = pd.concat(processed_dfs, ignore_index=True)
print('Final Combined Structured Data:')
display(final_df)

关键细节说明

  • 使用nrows=1读取文件:因为你原本要丢弃后面的16385行,直接只读第一行能大幅节省内存和读取时间。
  • split('=', 1)的作用:如果某个字段的值里意外包含了等号(比如Note=abc=123),这个写法只会拆分第一个等号,避免把值拆坏。
  • 列子集筛选:通过[column_subset]确保最终结果只保留你需要的列,顺序也和你指定的一致。

这样处理后,你就能得到像示例里那样的规整表格:

DateTime...
27-06-202312:16:15.8650000...
27-06-202314:46:24.1960000...

备注:内容来源于stack exchange,提问作者Maya Madajewicz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 07:18:13