Python - Pandas ошибка при разбиении текста с помощью функции - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь создать функцию, которая разбивает текст в столбце информационного кадра и помещает каждую половину разделения в новый новый столбец. Я хочу разделить текст сразу после указанной c фразы (определяемой как «search_text» в функции «create_var»), а затем обрезать этот текст до указанного количества символов (определяемых как left_trim_number в функции). Моя функция работала в некоторых случаях, но не работает в других.

Вот базовая c структура моего фрейма данных, где «lst» - мой список текстовых элементов, а «cols» - два столбца. исходного кадра данных:

import pandas as pd
cols = ['page', 'text_i']
df1 = pd.DataFrame(lst, columns=cols)

Вот моя функция:

def create_var(varname, search_text, left_trim_number):
    df1[['a',varname]] = df1['text_i'].str.split(search_text, expand=True)
    df1[varname] = df1[varname].str[: left_trim_number ] 

create_var('var1','I am looking for the text that follows this ',3)

В тех случаях, когда это не работает, я получаю эту ошибку (которая, я полагаю, связана с pandas ):

"Ошибка значения: длина столбцов должна быть такой же, как у ключа"

Есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 12 марта 2020

Вы можете попробовать это:

import pandas as pd

df = pd.DataFrame({"text":["hello world", "a", "again hello world"]})
search_text = "hello "


parts = df['text'].str.partition(search_text)
df['a'] = parts[0] + parts[1]
df['var1'] = parts[2]
df['var1'] = df['var1'].str[:3]

print (df)

Вывод:

                text             a var1
0        hello world        hello   wor
1                  a             a     
2  again hello world  again hello   wor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...