#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]