Разобрать один строковый столбец в столбце dataframe на множество других столбцов - PullRequest
1 голос
/ 20 апреля 2020

У меня есть столбец в фрейме данных pandas, который содержит строку, подобную следующему формату, как, например,

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

. Мы можем прочитать, например, первую строку как 2 параметра, разделенных знаком «+» каждый Параметр имеет значение, очищаемое символом «=», которое разделяет параметр и его значение.

в выходных данных, я спрашиваю, существует ли сценарий python, который либо извлекает параметры, мы получаем список уникальных параметров, таких как:

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

Уведомление из предыдущего списка что он содержит только уникальные параметры без своих значений

Или расширенный pandas фрейм данных, если это не так уж сложно, если мы можем проанализировать следующий столбец и преобразовать во множество столбцов, каждый столбец для одного параметра, который хранит его значение в нем

1 Ответ

2 голосов
/ 20 апреля 2020

Попробуйте, он сохранит значения в списке.

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, который можно использовать в pandas :

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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...