Python: Как удалить строку в pandas .Series? - PullRequest
1 голос
/ 01 мая 2020

У меня есть list_of_items список со строковыми объектами. И я хочу сделать из него pandas.Series. Я использую следующий код.

import pandas as pd

list_of_items = [
    'osobní automobil',
    'osobní automobil',
    'osobní automobil',
    'přípojné vozidlo - přívěs',
    'osobní automobil',
    'osobní automobil',
    'osobní automobil',
    'přípojné vozidlo - přívěs',
    'osobní automobil',
    'osobní automobil'
]
my_series = pd.Series(list_of_items)

И получаю следующий результат.

>>> print(my_series)
0                  osobní automobil
1                  osobní automobil
2                  osobní automobil
3    přípojné vozidlo - přívěs
4                  osobní automobil
5                  osobní automobil
6                  osobní automobil
7    přípojné vozidlo - přívěs
8                  osobní automobil
9                  osobní automobil

Однако я ожидаю этого:

0             osobní automobil
1             osobní automobil
2             osobní automobil
3    přípojné vozidlo - přívěs
4             osobní automobil
5             osobní automobil
6             osobní automobil
7    přípojné vozidlo - přívěs
8             osobní automobil
9             osobní automobil

Странный в том, что когда я пытаюсь раздеть элементы в my_series, результат все тот же:

>>> print(my_series.str.strip())
0                  osobní automobil
1                  osobní automobil
2                  osobní automobil
3    přípojné vozidlo - přívěs
4                  osobní automobil
5                  osobní automobil
6                  osobní automobil
7    přípojné vozidlo - přívěs
8                  osobní automobil
9                  osobní automobil

Пожалуйста, вы можете мне помочь, что я пропускаю? Что я делаю не так?

РЕДАКТИРОВАТЬ

Если есть проблема с выравниванием рендеринга, не могли бы вы помочь мне решить ее?

Ответы [ 3 ]

2 голосов
/ 01 мая 2020

Как упомянул @Ben T. в комментариях - если я откажусь от пунктов, то проблема с плохим выравниванием больше не будет. Для этой цели можно использовать gensim.utils.deaccent.

>>> import gensim
>>> my_series = my_series.apply(gensim.utils.deaccent)
>>> print(my_series)
0             osobni automobil
1             osobni automobil
2             osobni automobil
3    pripojne vozidlo - prives
4             osobni automobil
5             osobni automobil
6             osobni automobil
7    pripojne vozidlo - prives
8             osobni automobil
9             osobni automobil
1 голос
/ 01 мая 2020

С вашими данными все в порядке, кажется, что это проблема выравнивания рендеринга

Это можно проверить, распечатав отдельные элементы

>>> for item in my_series: print('"'+item+'"')
... 
"osobní automobil"
"osobní automobil"
"osobní automobil"
"přípojné vozidlo - přívěs"
"osobní automobil"
"osobní automobil"
"osobní automobil"
"přípojné vozidlo - přívěs"
"osobní automobil"
"osobní automobil"
0 голосов
/ 01 мая 2020

Попробуйте это решение. Это жестко исправленное решение, но оно сработало.

_ = [print("{:>26}".format(item)) for item in my_series]

Вывод

         osobní automobil
         osobní automobil
         osobní automobil
přípojné vozidlo - přívěs
         osobní automobil
         osobní automobil
         osobní automobil
přípojné vozidlo - přívěs
         osobní automobil
         osobní automobil
...