Как обрезать все строки столбца датасета?

Есть задача: Сетнимент анализ по plot файла wiki_movie_plots_deduped.csv на английском bert

Пример датасета:

введите сюда описание изображения

Планировал добавить столбец Sentiment, который определяет предобученная модель:

import pandas as pd
import seaborn as sns
import transformers
from transformers import pipeline

movie_df = pd.read_csv("wiki_movie_plots_deduped.csv", sep=',')

movies = movie_df

SentimentClassifier = pipeline("sentiment-analysis")

def FunctionBERTSentiment(inpText):
  return(SentimentClassifier(inpText)[0]['label'])

movies['Sentiment']=movies['Plot'].apply(FunctionBERTSentiment) 

Но питон ругается на размер строки:

The size of tensor a (760) must match the size of tensor b (512) at non-singleton dimension 1

Есть ли способ предварительно обработать столбец, обрезав все строки до максимального размера в 512 символов?


Ответы (1 шт):

Автор решения: Алексей Р

Обрезать строки в столбце фрейма можно с помощью pandas.Series.str.slice или, в сокращенной записи, str[]:

df = pd.DataFrame({'text':['a'*550,'b'*511,'c'*100]})
df['length'] = df.text.str.len()
print(df)
df.text = df.text.str.slice(0,512) # или df.text = df.text.str[:512]
df['length'] = df.text.str.len()
print(df)
                                                text  length
0  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...     550
1  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...     511
2  cccccccccccccccccccccccccccccccccccccccccccccc...     100
                                                text  length
0  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...     512
1  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...     511
2  cccccccccccccccccccccccccccccccccccccccccccccc...     100

→ Ссылка