Невозможно добавить значения столбцов в список с помощью условного оператора

#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 , а не добавлять.