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

如何将含结构化参数的字符串列表转换为Pandas DataFrame?

如何将参数化文件名转换为Pandas DataFrame?

原输入列表的解法

其实你的原输入列表是可以实现需求的,只要参数值本身不包含下划线(从你给出的例子来看确实满足这个条件)。核心思路是用正则表达式匹配每个参数名__参数值的模块,把每个文件名解析成字典,再转换成DataFrame(缺失参数会自动填充NaN)。

具体代码实现如下:

import pandas as pd
import re

def parse_original_filename(filename):
    # 移除末尾的.pkl后缀
    clean_name = filename.rstrip('.pkl')
    # 正则匹配:捕获包含下划线的参数名,以及对应的参数值(直到下一个下划线为止)
    pattern = r'([a-z_]+)__([^_]+)'
    matches = re.findall(pattern, clean_name)
    # 转换为参数字典
    return {param: value for param, value in matches}

# 原输入列表
original_input = ["number__128_alg__hello_min_n__7_max_n__9_full_seq__True_random_color__False_shuffle_shapes__False.pkl", 
                  "k__9_window__10_number__128_overlap__True_alg__hi_min_n__7_max_n__9_full_seq_embedding__False_random_color__False_shuffle_shapes__False.pkl", 
                  "k__9_window__10_number__128_overlap__True_alg__what_random_color__False_shuffle_shapes__False.pkl"]

# 解析所有文件名
parsed_original = [parse_original_filename(f) for f in original_input]

# 生成DataFrame
df_original = pd.DataFrame(parsed_original)
print(df_original)

这段代码会自动识别所有出现过的参数作为列,缺失参数的位置填充NaN。


修改后输入列表的解法

修改后的输入把参数名内部的下划线换成了点(比如random.color),这种格式更健壮——即使未来参数值包含下划线,也不会和参数名的分隔符混淆。解法思路和原输入类似,只需微调正则表达式的参数名匹配规则:

import pandas as pd
import re

def parse_modified_filename(filename):
    clean_name = filename.rstrip('.pkl')
    # 正则匹配:捕获包含点的参数名,以及对应的参数值
    pattern = r'([a-z.]+)__([^_]+)'
    matches = re.findall(pattern, clean_name)
    return {param: value for param, value in matches}

# 修改后的输入列表
modified_input = ["number__128_alg__hello_min.n__7_max.n__9_full.seq__True_random.color__False_shuffle.shapes__False.pkl", 
                  "k__9_window__10_number__128_overlap__True_alg__hi_min.n__7_max.n__9_full.seq__False_random.color__False_shuffle.shapes__False.pkl", 
                  "k__9_window__10_number__128_overlap__True_alg__what_random.color__False_shuffle.shapes__False.pkl"]

parsed_modified = [parse_modified_filename(f) for f in modified_input]
df_modified = pd.DataFrame(parsed_modified)
print(df_modified)

关键说明

  • 两种解法的核心都是利用正则精准匹配参数名__参数值的结构,避免手动拆分时的歧义。
  • Pandas的DataFrame构造函数会自动合并所有字典的键作为列,缺失的键对应的值填充为NaN,完美满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:05