2014-10-01 11 views
1

Это кажется несколько базовым, но после прохождения stackoverflow я не мог взять все на все ответы и решить свою проблему. поэтому я работаю над своими навыками обработки текста. Я ставлю обзоры автомобилей в панде dataframe глядя, как это:, применяя функцию строки к столбцу dataframe pandas

Review 
0 :P I like you, Merc. You make me laugh! If Mat... 
1 I am surprised that I did not find any discuss... 
3 . . .let me see if I am following along correc... 
4 . . .now hold on a minute. A "current" A6 4.2 ... 
5 but has anyone noticed the front oh the new ac... 

я написал функцию, которая принимает строку в качестве входных данных и возвращает значение (в моем случае чувство оценки). в моей функции это значение будет помещено во вновь созданный столбец. проблема, с которой я, очевидно, сталкиваюсь, - это входной сигнал - я получаю ожидаемую строчную ошибку. с фреймворком данных есть объекты, а не строки.

Функция очень длинная и работает, когда вводится строка. Вот фрагмент функции: обратите внимание, что dataframe называется edmunds.

def checker(b): 
    word = 'ls' 
    if stry.find(word) == -1: 
     edmunds['ls'] = 0.0 
    ... 
    edmunds['ls'] = sum(o_list) 

всякая помощь была бы принята с благодарностью. пытаясь обернуть мою голову, если я должен перейти от dataframe к списку или если я все еще могу работать в пандах.

выход будет идеально выглядеть следующим образом:

Review             ls 
0 :P I like you, Merc. You make me laugh! If Mat... 0.4 
1 I am surprised that I did not find any discuss... 0.5 
3 . . .let me see if I am following along correc... 0.0 
4 . . .now hold on a minute. A "current" A6 4.2 ... 1.0 
5 but has anyone noticed the front oh the new ac... -0.6 
+1

Что вы пытаетесь здесь? Вы можете применить свою функциональную строку, которая будет выглядеть примерно так: 'df ['ls'] = df.apply (лямбда-строка: checker (x.Review), axis = 1)', но в идеале вы хотите прорисовать свою функцию так, чтобы это может быть сделано во всей колонке, в настоящий момент ваша функция выглядит неполной, поэтому трудно предположить, какие улучшения могут быть сделаны. – EdChum

+0

это просто фрагмент очень длинной функции. но концепция такая же. он возвращает число в качестве результата, заданного вводом, который должен быть строкой. проблема заключается в том, что в dataframe не содержатся строки - он содержит объекты. например, когда я пытаюсь выполнить вышеизложенное: TypeError: («ожидаемая строка или буфер», u'occurred по индексу 0 '). Я пытаюсь найти способ избежать этой ошибки. – itjcms18

ответ

1

Чтобы создать столбец ls из колонки Review:

  1. нужна функция, которая принимает один строку и возвращает один номер , В настоящее время функция checker этого не делает, поскольку она ничего не возвращает (а также устанавливает значения внутри edmunds, что необязательно). Учитывая, как выглядит функция, вы, вероятно, захотите закончить функцию с помощью return sum(o_list). И, чтобы быть ясным, вход b должен быть одной строкой. Один из способов проверить это: вы должны иметь возможность написать checker("hello") и получить номер обратно.

  2. Если вы написали checker таким образом, то вы можете создать ls легко: edmunds['ls'] = edmunds.Review.apply(checker)

В случае, если вы хотите получить больше фона на то, почему панда работает следующим образом: apply функции является пример mapping (функция над списком).

Смежные вопросы