python - 根据字符串中的值将字符串列表转换为 pandas DataFrame

标签 python python-3.x pandas

我有一个如下所示的字符串列表:

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"]

这些字符串的格式是参数名称后跟“__”,然后是参数值。参数值之后,下一个参数名称之前有一个_。值得注意的是,有些参数名称中包含 _ (例如“random_shape”。每个字符串都有不同的参数,但存在重叠。因此,我想制作一个数据框,将每个参数名称作为一列,并且每个row 是与 input 列表中每个元素对应的值。如果列表中的特定值没有参数,则数据框应包含 NA 或 NaN 或任何内容。

如何做到这一点?

谢谢!

编辑:如果原始列表无法完成,该怎么办:

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"]

最佳答案

如果您假设值不能包含 _ 字符(也假设您希望最终丢弃 .pkl),则这是可能的。

input = [
    "number__128_alg__hello_min_n__7_max_n__9_full_seq_embedding__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"
]

一个简单的正则表达式就可以解决问题:

import re
data = [dict(re.findall(r"([^_].*?)__([^_]+)", _[:-4])) for _ in input]
print(data)

结果:

[{'number': '128',
  'alg': 'hello',
  'min_n': '7',
  'max_n': '9',
  'full_seq_embedding': 'True',
  'random_color': 'False',
  'shuffle_shapes': 'False'},
 {'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'},
 {'k': '9',
  'window': '10',
  'number': '128',
  'overlap': 'True',
  'alg': 'what',
  'random_color': 'False',
  'shuffle_shapes': 'False'}]    

作为数据框:

import pandas as pd
pd.DataFrame(data)

enter image description here

关于python - 根据字符串中的值将字符串列表转换为 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514409/

相关文章:

python - 在 Django Celery 结果中使用临时文件

python - 了解 Python 字典上的 max 函数操作

python - Project euler 12 python 代码无法运行,是速度慢还是什么?

r - Python Pandas 与 R. 转换代码的简洁性

python - 在 Python 中将类似字节的字符串转换为实际字节

python - 足球数据的多元多项式拟合

python - 如何使用python将excel数据读取到数组中

python - 如何在python opencv中水平交换图像的两半

python - 已验证多行正则表达式在 notepad++ 中有效,但在 python 中没有结果

python - 在 pandas 中使用滚动窗口计算非零数的有效方法?