Удалить строковый список строк Юникода в столбце панд - PullRequest
0 голосов
/ 23 мая 2018

У меня есть столбец в df, который выглядит следующим образом:

pd.DataFrame(["[u'one_element']", "[u'two_elememts', u'two_elements']", "[u'three_elements', u'three_elements', u'three_elements']"])

    0
0   [u'one_element']
1   [u'two_elememts', u'two_elements']
2   [u'three_elements', u'three_elements', u'three_elements']

Эти элементы являются строками:

type(df[0].iloc[2]) == str

Конечный результат должен выглядеть следующим образом:

    0
0   one_element
1   two_elememts, two_elements
2   three_elements, three_elements, three_elements

Я пробовал с:

df[column] = df[column].map(lambda x: x.lstrip('[u').rstrip(']').replace("u'","").replace("'",""))

Но, очевидно, это медленно, когда у вас много строк.

Есть ли лучший способ сделать это?У df есть много столбцов разных типов: строки, целые числа, числа с плавающей запятой.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вам не нужна карта, вы можете использовать атрибут str для панд. Серия:

(df[0].str.lstrip('[u')
           .str.rstrip(']')
           .str.replace("u'","")
           .str.replace("'","")))

достигает того же результата, но не использует карту

0                                       one_element
1                        two_elememts, two_elements
2    three_elements, three_elements, three_elements
Name: 0, dtype: object
0 голосов
/ 23 мая 2018

Использование модуля ast .

import pandas as pd
import ast
df = pd.DataFrame(["[u'one_element']", "[u'two_elememts', u'two_elements']", "[u'three_elements', u'three_elements', u'three_elements']"])
print(df[0].apply(lambda x: ", ".join(ast.literal_eval(x))))

Выход:

0                                       one_element
1                        two_elememts, two_elements
2    three_elements, three_elements, three_elements
Name: 0, dtype: object
0 голосов
/ 23 мая 2018

Вы можете использовать регулярные выражения и полосы, т.е.

df[0] = df[0].str.strip("[]").str.replace("u'|'",'')

0                                       one_element
1                        two_elememts, two_elements
2    three_elements, three_elements, three_elements
Name: 0, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...