微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从字符串列表中创建一个DataFrame,每个字符串具有不同数量的属性

如何解决如何从字符串列表中创建一个DataFrame,每个字符串具有不同数量的属性

我有一个字符串列表,其中每个条目都有可变数量的“属性”,并且因此顺序可能有所不同。

str_list = ['id1 [first="jake" last="sully" hours="24"]','id2 [first="bob" last="ross" job="painter" hours="11]']

如何将列表转换为数据框,如果字符串缺少属性,该字符串在df中将为空白?

DataFrame看起来像这样(列顺序必须如下所示):

   id   first        job     last    hours
  id1    jake               sully       24 
  id2     bob    painter     ross       11

我知道id可以将字符串[[]拆分成第0个索引,所以这不是问题。 为了从字符串条目中获取属性项,我知道我可以使用

test_list = re.findall(r'"(.*?)"',str)

获取值列表,但是我将如何在每个条目中使用不同数量的“属性” /混乱顺序来实现我的总体目标呢?

解决方法

尝试一下:

import re
import pandas as pd

str_list = ['id1 [first="jake" last="sully" hours="24"]','id2 [first="bob" last="ross" job="painter" hours="11"]']

res = []
for item in str_list:
    current = {'id': re.findall('id\d+',item)[0]}
    for col in ['first','last','job','hours']:
        x = re.findall(f'{col}="(.*?)"',item)
        if x :
            current[col] = x[0]
            
    res.append(current)

pd.DataFrame(res)

输出:

    id first   last hours      job
0  id1  jake  sully    24      NaN
1  id2   bob   ross    11  painter

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。