Получение длины текста в кадре данных в python - PullRequest
0 голосов
/ 14 апреля 2020

Итак, у меня есть этот фрейм данных:

    Text                                             target
    #Coronavirus is a cover for something else. #5...   D
    Crush the One Belt One Road !! \r\n#onebeltonf...   B
    RT @nickmyer: It seems to be, #COVID-19 aka #c...   B
    @Jerusalem_Post All he knows is how to destroy...   B
    @newscomauHQ Its gonna show us all. We will al...   B

Где текст - твиты, и я пытаюсь получить счетчик каждой строки в текстовом столбце и ввести счетчик в фрейм данных. И я попробовал это

d = pd.read_csv('5gCoronaFinal.csv')
d['textlength'] = [len(int(t)) for t in d['Text']]

Но он продолжает выдавать мне эту ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-42-dabcab1de7b2> in <module>
----> 1 d['textlength'] = [len(t) for t in d['Text']]

<ipython-input-42-dabcab1de7b2> in <listcomp>(.0)
----> 1 d['textlength'] = [len(t) for t in d['Text']]

TypeError: object of type 'float' has no len()

Я пытался преобразовать т в целое число так:

d['textlength'] = [len(int(t)) for t in d['Text']]

но тогда это дает мне эту ошибку:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-9ae56e5f7912> in <module>
----> 1 d['textlength'] = [len(int(t)) for t in d['Text']]

<ipython-input-43-9ae56e5f7912> in <listcomp>(.0)
----> 1 d['textlength'] = [len(int(t)) for t in d['Text']]

ValueError: invalid literal for int() with base 10: '#Coronavirus is a cover for something else. #5g is being rolled out and they are expecting lots to...what? Die from #60ghz +. They look like they are to keep the cold in? #socialdistancing #covid19 #

Мне нужна помощь, спасибо!

1 Ответ

2 голосов
/ 14 апреля 2020

Вы можете использовать аксессор str для векторизованных строковых операций. В этом случае вы можете использовать str.split и str.len:

df['Text_length'] = df.Text.str.split().str.len()

print(df)

                                                Text target  Text_length
0  #Coronavirus is a cover for something else. #5...      D            8
1  Crush the One Belt One Road !! \r\n#onebeltonf...      B            8
2      RT @nickmyer: It seems to be, #COVID-19 aka #      B            9
3     @Jerusalem_Post All he knows is how to destroy      B            8
4     @newscomauHQ Its gonna show us all. We will al      B            9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...