我有一個(gè)代表餐廳顧客評(píng)分的數(shù)據(jù)框。star_rating是該數(shù)據(jù)框中客戶(hù)的評(píng)級(jí)。我想要做的是nb_favorables_mention在同一數(shù)據(jù)框中添加一列,表示收到至少一個(gè)“有用”或“有趣”或“酷”評(píng)級(jí)的評(píng)論總數(shù),并且評(píng)論的評(píng)級(jí)> = 3。data = {'rating_id': ['1', '2','3','4','5','6','7','8','9'], 'user_id': ['56', '13','56','99','99','13','12','88','45'], 'restaurant_id': ['xxx', 'xxx','yyy','yyy','xxx','zzz','zzz','eee','eee'], 'star_rating': ['2.3', '3.7','1.2','5.0','1.0','3.2','1.0','2.2','0.2'], 'rating_year': ['2012','2012','2020','2001','2020','2015','2000','2003','2004'], 'first_year': ['2012', '2012','2001','2001','2012','2000','2000','2001','2001'], 'last_year': ['2020', '2020','2020','2020','2020','2015','2015','2020','2020'], 'funny': ['1', '0','0','1','1','1','0','0','0'], 'useful': ['1', '0','0','0','1','0','0','0','1'], 'cool': ['1', '0','0','0','1','1','1','1','1'], }df = pd.DataFrame (data, columns = ['rating_id','user_id','restaurant_id','star_rating','rating_year','first_year','last_year','funny','useful','cool'])df['star_rating'] = df['star_rating'].astype(float)filtered_data = df[(df['star_rating'] >= 3) & (df['funny']==1 | df['useful']==1 | df['cool']==1)]d = filtered_data.groupby('restaurant_id')['star_rating'].count().to_dict()df['nb_favorables_mention'] = df['restaurant_id'].map(d)df.head(20)我不確定我的語(yǔ)法有什么問(wèn)題,但根據(jù)我的嘗試,我不斷收到這些錯(cuò)誤消息ValueError:系列的真值不明確。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。類(lèi)型錯(cuò)誤:無(wú)法使用 dtyped [object] 數(shù)組和 [bool] 類(lèi)型的標(biāo)量執(zhí)行“ror_”考慮到我想要實(shí)現(xiàn)的目標(biāo),正確的語(yǔ)法是什么?
1 回答

當(dāng)年話(huà)下
TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
您遇到運(yùn)算符優(yōu)先級(jí)問(wèn)題;在 python 中,|
運(yùn)算符的優(yōu)先級(jí)高于==
,將比較表達(dá)式括在括號(hào)中應(yīng)該可以解決您的問(wèn)題,而且由于和列是 str 類(lèi)型,因此使用 stringfunny
而不是 number?:useful
cool
'1'
1
filtered_data?=?df[(df['star_rating']?>=?3)?&?((df['funny']=='1')?|?(df['useful']=='1')?|?(df['cool']=='1'))]
除了使用 之外|
,您還可以一次性比較多個(gè)列,然后使用以下命令檢查條件any
:
filtered_data?=?df[(df['star_rating']?>=?3)?&?df[['funny',?'useful',?'cool']].eq('1').any(axis=1)]
添加回答
舉報(bào)
0/150
提交
取消