将dataframe列中的一个字符串列解析为许多其他列

2024-09-30 02:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我在熊猫数据框中有一列,它包含如下格式的字符串,例如

fullyRandom=true+mapSizeDividedBy64=51048
mapSizeDividedBy16000=9756+fullyRandom=false
qType=MpmcArrayQueue+qCapacity=822398+burstSize=664
count=11087+mySeed=2+maxLength=9490
capacity=27281
capacity=79882

例如,我们可以将第一行读取为两个参数,由“+”分隔,每个参数都有一个值,由“=”清除,该值在参数及其值之间分隔

在输出中,我询问是否有一个python脚本,它可以提取参数,也可以检索一个唯一参数列表,如下所示

[fullyRandom,mapSizeDividedBy64,mapSizeDividedBy64,qType,qCapacity,qCapacity, count,mySeed,maxLength,Capacity]

请注意,在上一个列表中,它只包含唯一的参数,而不包含其值

或者扩展熊猫数据帧,如果我们可以解析下面的列并将其转换为许多列,那么这并不太困难,因为每一列都代表一个参数,该参数在其中存储它的值


Tags: 数据字符串true列表参数格式countcapacity
1条回答
网友
1楼 · 发布于 2024-09-30 02:29:28

尝试此操作,它会将值存储在列表中

data = []
with open('<your text file>', 'r') as file:
    content = file.readlines()

    for row in content:
        if '+' in row:
            sub_row = row.strip('\n').split('+')
                for r in sub_row:
                    data.append(r)
        else:
            data.append(row.strip('\n'))

print(data)

输出:

['fullyRandom=true', 'mapSizeDividedBy64=51048', 'mapSizeDividedBy16000=9756', 'fullyRandom=false', 'qType=MpmcArrayQueue', 'qCapacity=822398', 'burstSize=664', 'count=11087', 'mySeed=2', 'maxLength=9490', 'capacity=27281', 'capacity=79882']

要转换为可在熊猫中使用的dict列表,请执行以下操作:

dict_list = []
for item in data:
    df = {
        item.split('=')[0]: item.split('=')[1]
    }
    dict_list.append(df)
print(dict_list)

输出:

[{'fullyRandom': 'true'}, {'mapSizeDividedBy64': '51048'}, {'mapSizeDividedBy16000': '9756'}, {'fullyRandom': 'false'}, {'qType': 'MpmcArrayQueue'}, {'qCapacity': '822398'}, {'burstSize': '664'}, {'count': '11087'}, {'mySeed': '2'}, {'maxLength': '9490'}, {'capacity': '27281'}, {'capacity': '79882'}]

要仅获取标题,请执行以下操作:

dict_list.append(item.split('=')[0])

输出:

['fullyRandom', 'mapSizeDividedBy64', 'mapSizeDividedBy16000', 'fullyRandom', 'qType', 'qCapacity', 'burstSize', 'count', 'mySeed', 'maxLength', 'capacity', 'capacity']

相关问题 更多 >

    热门问题