Как применить эту функцию длины строки к столбцу в моем фрейме данных? - PullRequest
0 голосов
/ 20 марта 2019

Я написал функцию, которая возвращает длину строки,

def string_length():
string = input("Please enter a string: ")
"""This prompts the user to enter a string"""
return(len(string))

У меня есть набор данных с именем film, в котором есть столбец с именем Phrase.Я хочу добавить новый столбец в мой набор данных, который применяет мою функцию к столбцу фразы и вводит длину строки для каждого значения в фразе.

Я попытался использовать следующий код:

film['Phrase length']=film['Phrase'].apply(string_length)

Однако это возвращает ошибку:

TypeError: string_length () принимает 0 позиционных аргументов, но 1 былучитывая

Что мне нужно сделать, чтобы исправить этот код?

Я уверен, что упускаю что-то очень глупое, но я все еще новичок в python!

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Если я правильно понимаю ваш вопрос, то вы должны искать это:

def string_length(str):
    x = len(str)
    return x

df['Phrase length'] = df['Phrase'].apply(lambda x: string_length(x))

или

df['Phrase length'] = df['Phrase'].map(string_length)

ОБНОВЛЕНИЕ:

Если вы хотите использовать input () для ввода имени столбца по вашему выбору, используйте следующее:

def string_length(data):
    print("Please enter column name:")
    a = input()
    data[a+'_len'] = data[a].astype(str).apply(lambda x: len(x))

, а затем:

string_length(df)

Введите имя столбца по вашему выборуи затем попробуйте распечатать фрейм данных.

0 голосов
/ 20 марта 2019

Функция запрашивает ввод данных пользователем. Это не будет работать, если вы примените его к кадру данных. Однако вы можете применить встроенную функцию len ():

film['Phrase length'] = film.Phrase.apply(len)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...