Удаление элементов из серии списков Pandas - PullRequest
0 голосов
/ 19 ноября 2018

Я искал решения и подсказки с сайта, но не смог найти проблему, напрямую связанную с моим делом.

Я скопировал текстовые данные с разных сайтов и разделил текст с помощью str.split('\n'). Текст содержит много символов \ n, и разбиение таким образом сделало его довольно желательным. (Пожалуйста, дайте мне знать, если этот подход слишком плох.)

df['scrape']
0       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
1       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
2       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
3       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
4       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...
5       \nWebsite:\n\n\n\nVisit\n\n \nWhite paper:\n\n...

Результатом стала серия списков Pandas - все элементы являются списком строк.

df['split'] = df['scrape'].str.split('\n')
0       [, Website:, , , , Visit, ,  , White paper:, ,...
1       [, Website:, , , , Visit, ,  , White paper:, ,...
2       [, Website:, , , , Visit, ,  , White paper:, ,...
3       [, Website:, , , , Visit, ,  , White paper:, ,...
4       [, Website:, , , , Visit, ,  , White paper:, ,...
5       [, Website:, , , , Visit, ,  , White paper:, ,...
6       [, Website:, , , , Visit, ,  , White paper:, ,...

Я хочу избавиться от элемента None (‘’ и ‘‘) в каждом списке.

Я попытался зациклить:

for i in series:
    While ‘’ in i:
        i.remove(‘’)

Приведенный выше код работает с произвольным примером, который я сделал, но с моими реальными данными он выдает ошибку.

for i in df['split']:
...     while '' in i:
...         i.remove('')
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: argument of type 'float' is not iterable

Я не уверен, почему я получаю ошибку с моими данными. Могли бы получить совет по этому поводу? Спасибо!

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете использовать понимание списка:

new_series = [s for s in series if s!='' and s!=' ' and s!=None]

Чтобы применить понимание списка к каждому элементу в серии списков Pandas (по сути, список списков), вам необходимо вложить понимание списка следующим образом:

new_series = [[s for s in element if s!='' and s!=' ' and s!=None] for element in series]
...