Создание столбца из фрагмента строки в Pandas

#python #pandas #string #slice

#python #pandas #строка #фрагмент

Вопрос:

кто-нибудь знает, почему это отображает значение NaN в столбце «2_stars»?? Заранее спасибо

 data['1_star']=data['Sentiment'].str.slice(31,40)
data['start'] = data['Sentiment'].str.find("'2 stars', 'score': ")   len("'2 stars', 'score': ")
data['end'] = data['Sentiment'].str.find("}, {'label': '3 stars'")
data['2_stars']=data['Sentiment'].str.slice(data['start'],data['end'])
  

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

Ответ №1:

Pandas str.slice работает со скалярными числами, а не со значениями всех столбцов. Поэтому требуется обработка для строк в DataFrame.apply :

 data['2_stars']= data.apply(lambda x: x['Sentiment'][slice(x['start'], x['end'])], axis=1)
  

Еще одна идея с пониманием списка:

 zipped = zip(data['Sentiment'], data['start'], data['end'])
data['2_stars'] = [a[slice(s, e)] for a, s, e in zipped]