строки в столбец с использованием Python - PullRequest
0 голосов
/ 01 октября 2019

У меня есть вся таблица в виде строки, как показано ниже: a = "id; дата; тип; статус; описание \ r \ n1; 20 января 2019; cat1; активный; клиент находится под наблюдением \ xe9e \ r \ n2;18 февраля 2019; cat2; активный; покупатель является подлинным \ r "n"

внутри строки. У нас есть некоторый код ascii, такой как \ xe9e, поэтому мы должны преобразовать строку в не ascii

Мой ожидаемый вывод - преобразовать вышеуказанную строку в кадр данных, как показано ниже:

id date       type status description
1 20-Jan-2019 cat1 active customer is under observation
2 18-Feb-2019 cat2 active customer is genuine

Мой код:

b = a.splitlines()
c = pd.DataFrame([sub.split(";") for sub in b])

Я получаю следующий вывод. но мне нужна первая строка в качестве заголовка, а также преобразовать ascii в текст utf-8.

        0   1           2           3   4                               5  6
    0   id  date        type    status  description                     None  None
    1   1   20-Jan-2019 cat1    active  customer is underée observation None  None
    2   2   18-Feb-2019 cat2    active  customer is genuine             None  None

Также, пожалуйста, не создавайте дополнительные столбцы со значением None. Что не должно быть дела

1 Ответ

0 голосов
/ 01 октября 2019

Вот немного хакерский ответ, но, учитывая, что ваш вопрос не совсем понятен, этого, мы надеемся, будет достаточно.

 import pandas as pd
 import numpy as np
 import re

 a="id;date;type;status;description\r\n1;20-Jan-2019;cat1;active;customer is under\xe9e observation\r\n2;18-Feb-2019;cat2;active;customer is genuine\r\n"

 b=re.split('; |\r|\n',a) #split at the delimiters.

 del b[-1] #also delete the last index, which we dont need
 b[1:]=[re.sub(r'\xe9e', '', b[i]) for i in range(1,len(b))]  #get rid of that \xe9e issue

 df=pd.DataFrame([b[i].split(';') for i in range(1,len(b))]) #make the dataframe
 ##list comprehension allows to generalize this if you add to string##
 df.columns=b[0].split(';') #split the title words for column names
 df['id']=[i for i in range(1,len(b))]
 df

Этот вывод, вероятно, соответствует тому, что вы подразумевали под фреймом данных: ity

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