#python #pandas
Вопрос:
У меня есть фрейм данных
import pandas as pd df = pd.DataFrame({'product':['shoe','shirt','pants','socks'], 'review_rating':[1.2,3.0,4.0,2.1], 'review_text':['good','bad','good','bad']}) good_reviews = [] print(df)
Я хочу иметь возможность добавлять значения review_text в список с помощью условного оператора.
Я попробовал это:
for column in df[['reviews.rating', 'reviews.text']]: if df[df['reviews.rating']] lt;= 2.0: good_reviews.append(df['reviews.text'])
После попытки я получил ошибку:
Ошибка ключа: Ни один из [Индекс([‘отзывы.рейтинг’, ‘отзывы.текст’], dtype=’объект’)] не находится в [столбцах]
Ответ №1:
import pandas as pd df = pd.DataFrame({'product':['shoe','shirt','pants','socks'], 'review_rating':[1.2,3.0,4.0,2.1], 'review_text':['good','bad','good','bad']}) good_reviews = df.loc[df["review_rating"] lt;= 2.0,'review_text'] print(good_review)
Ответ №2:
Вы получаете эту ошибку, потому что имена столбцов в вашем цикле не совпадают с именами в df
.
Теперь о вашей конкретной проблеме, вы можете создать логическую маску и использовать ее для фильтрации review_text
.
boolean_mask = df['review_rating']lt;=2 ratings = df.loc[boolean_mask,'review_text']
и если у вас уже есть good_reviews
список, вы можете расширить его,:
good_reviews.extend(ratings.tolist())
Комментарии:
1. Я прошу прощения за этот вопрос, но есть ли причина, по которой вы решили использовать метод .extend над .append?
2.
list.extend
это то жесамое, что и оператор. Поскольку
ratings.tolist()
это список, вы хотите добавить егоgood_reviews
, а не добавлять.