Применение literal_eval к ​​строке списков POS-тегов дает ValueError - PullRequest
0 голосов
/ 10 декабря 2018

В столбце панд у меня есть список POS-тегов в виде строки.Я думал, что это должна быть строка, потому что print(dataset['text_posTagged'][0][0]) печатает [.

набор данных ['text_posTagged']

['VBP', 'JJ', 'NNS', 'VBP', 'JJ', 'IN', 'PRP', 'VBP', 'TO', 'VB', 'PRP', 'RB', 'VBZ', 'DT', 'JJ', 'PRP$', 'NN', 'NN', 'NN', 'NN', 'VBZ', 'JJ']
['UH', 'DT', 'VB', 'VB', 'PRP$', 'NN', 'TO', 'JJ', 'IN', 'PRP', 'MD', 'VB', 'DT', 'VBZ', 'DT', 'NN', 'NN']
['NN', 'VBD', 'NN', 'NN', 'NN', 'DT', 'IN', 'IN', 'NN', 'IN', 'NN', 'NN', 'VBD', 'IN', 'JJ', 'NN', 'NN']

Чтобы преобразовать это в фактический список, я использовал следующее.

dataset['text_posTagged'] = dataset.text_posTagged.apply(lambda x: literal_eval(x)). 

Однако это дает ValueError: неправильно сформированный узел или строка: nan

Когда я применил то же самое в столбце, который имеет список слов, он работает нормально,

набор данных ['text']

['are', 'red', 'violets', 'are', 'blue', 'if', 'you', 'want', 'to', 'buy', 'us', 'here', 'is', 'a', 'clue', 'our', 'eye', 'amp', 'cheek', 'palette', 'is', 'al']
['is', 'it', 'too', 'late', 'now', 'to', 'say', 'sorry']
['our', 'amazonian', 'clay', 'full', 'coverage', 'foundation', 'comes', 'in', '40', 'shades', 'of', 'creamy', 'goodness']

Следующие отпечатки are

dataset['text'] = dataset.text.apply(lambda x: literal_eval(x)).
print(dataset['text'][0][0])

Что не так с применениемliteral_eval в списке POS-тегов? Как это сделать правильно?

1 Ответ

0 голосов
/ 10 декабря 2018

Разбор только ненулевых строк.Вы можете сбросить лямбду.

m = dataset['text_posTagged'].notna()
dataset.loc[m, 'text_posTagged'] = (
    dataset.loc[m, 'text_posTagged'].apply(literal_eval))

Если у вас 100 строк или меньше, вы также можете использовать pd.eval:

dataset.loc[m, 'text_posTagged'] = pd.eval(dataset.loc[m, 'text_posTagged'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...