Df со списками внутри. AttributeError: объект «список» не имеет атрибута «разделить»

изначально был этот текст df (называется train)

index                     train
0        My favourite food is anything I didn't have to...
1        Now if he does off himself, everyone will thin...
2                           WHY THE FUCK IS BAYLESS ISOING
3                              To make her feel threatened
4                                   Dirty Southern Wankers

И я использовал это для подсчета слов в наборе поездов:

def word_count(df):
word_count = []
for i in df['text']:
    word = i.split()
    word_count.append(len(word))
return word_count

train['word_count'] = word_count(train)

Но я забыл применить предварительную обработку. После применения предварительной обработки в текстах df стал таким

index                             train
0                     [favourit, food, anyth, didnt, cook]
1        [everyon, think, he, laugh, screw, peopl, inst...]
2                                     [fuck, bayless, iso]
3                                   [make, feel, threaten]
4                                [dirti, southern, wanker]

И когда я пытаюсь использовать def word_count(df): у меня ошибка:

AttributeError: 'list' object has no attribute 'split'

Потому что теперь у меня есть df со списками внутри. Как я могу это решить?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам не нужна эта функция костюма, сделайте это:

df['word_count'] = df['train'].apply(lambda x: len(x))
print(df)

                                             train  word_count
0             [favourit, food, anyth, didnt, cook]           5
1  [everyon, think, he, laugh, screw, peopl, inst]           7
2                             [fuck, bayless, iso]           3
3                           [make, feel, threaten]           3
4                        [dirti, southern, wanker]           3

Если у вас уже есть list, используйте str.len():

df['word_count'] = df['train'].str.len()
print(df)

# Output
                                             train  word_count
0             [favourit, food, anyth, didnt, cook]           5
1  [everyon, think, he, laugh, screw, peopl, inst]           7
2                             [fuck, bayless, iso]           3
3                           [make, feel, threaten]           3
4                        [dirti, southern, wanker]           3

Другие вопросы по теме