第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何通過(guò)大于考慮索引來(lái)過(guò)濾列

如何通過(guò)大于考慮索引來(lái)過(guò)濾列

莫回?zé)o 2023-09-05 21:02:04
我有一個(gè)代表餐廳顧客評(píng)分的數(shù)據(jù)框。star_rating是該數(shù)據(jù)框中客戶(hù)的評(píng)級(jí)。我想要做的是在同一數(shù)據(jù)框中添加一列nb_fave_rating,表示餐廳的好評(píng)總數(shù)。如果其星星數(shù)為 ,我認(rèn)為“贊成”意見(jiàn)> = 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'],        }df = pd.DataFrame (data, columns = ['rating_id','user_id','restaurant_id','star_rating','rating_year','first_year','last_year'])df['star_rating'] = df['star_rating'].astype(float)positive_reviews = df[df.star_rating >= 3.0 ].groupby('restaurant_id')positive_reviews.head()從這里開(kāi)始,我不知道要計(jì)算餐廳的正面評(píng)論數(shù)量并將其添加到我的初始數(shù)據(jù)框的新列中df。預(yù)期的輸出會(huì)是這樣的。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'],        'nb_fave_rating': ['1', '1','1','1','1','1','1','0','0'],        }所以我嘗試了這個(gè)并得到了一堆 NaNdf['nb_fave_rating']=df[df.star_rating >= 3.0 ].groupby('restaurant_id').agg({'star_rating': 'count'})df.head()
查看完整描述

4 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

groupby這是和的潛在解決方案map

#filtering the data with >=3 ratings?

filtered_data = df[df['star_rating'] >= 3]


#creating a dict containing the counts of the all the favorable reviews

d = filtered_data.groupby('restaurant_id')['star_rating'].count().to_dict()


#mapping the dictionary to the restaurant_id to generate 'nb_fave_rating'

df['nb_fave_rating'] = df['restaurant_id'].map(d)


#taking care of `NaN` values?

df.fillna(0,inplace=True)


#making the column integer (just to match the requirements)

df['nb_fave_rating'] = df['nb_fave_rating'].astype(int)


print(df)

輸出:


? rating_id user_id restaurant_id? star_rating rating_year first_year last_year? nb_fave_rating

0? ? ? ? ?1? ? ? 56? ? ? ? ? ?xxx? ? ? ? ? 2.3? ? ? ? 2012? ? ? ?2012? ? ? 2020? ? ? ? ? ? ? ?1

1? ? ? ? ?2? ? ? 13? ? ? ? ? ?xxx? ? ? ? ? 3.7? ? ? ? 2012? ? ? ?2012? ? ? 2020? ? ? ? ? ? ? ?1

2? ? ? ? ?3? ? ? 56? ? ? ? ? ?yyy? ? ? ? ? 1.2? ? ? ? 2020? ? ? ?2001? ? ? 2020? ? ? ? ? ? ? ?1

3? ? ? ? ?4? ? ? 99? ? ? ? ? ?yyy? ? ? ? ? 5.0? ? ? ? 2001? ? ? ?2001? ? ? 2020? ? ? ? ? ? ? ?1

4? ? ? ? ?5? ? ? 99? ? ? ? ? ?xxx? ? ? ? ? 1.0? ? ? ? 2020? ? ? ?2012? ? ? 2020? ? ? ? ? ? ? ?1

5? ? ? ? ?6? ? ? 13? ? ? ? ? ?zzz? ? ? ? ? 3.2? ? ? ? 2015? ? ? ?2000? ? ? 2015? ? ? ? ? ? ? ?1

6? ? ? ? ?7? ? ? 12? ? ? ? ? ?zzz? ? ? ? ? 1.0? ? ? ? 2000? ? ? ?2000? ? ? 2015? ? ? ? ? ? ? ?1

7? ? ? ? ?8? ? ? 88? ? ? ? ? ?eee? ? ? ? ? 2.2? ? ? ? 2003? ? ? ?2001? ? ? 2020? ? ? ? ? ? ? ?0

8? ? ? ? ?9? ? ? 45? ? ? ? ? ?eee? ? ? ? ? 0.2? ? ? ? 2004? ? ? ?2001? ? ? 2020??


查看完整回答
反對(duì) 回復(fù) 2023-09-05
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

在一行中完成。


groupby()、transform布爾選擇并將結(jié)果轉(zhuǎn)換為integer.


  df['nb_fave_rating']=df.groupby('restaurant_id')['star_rating'].transform(lambda x: int((x>=3).sum()))


 rating_id user_id restaurant_id  star_rating rating_year first_year  \

0         1      56           xxx          2.3        2012       2012   

1         2      13           xxx          3.7        2012       2012   

2         3      56           yyy          1.2        2020       2001   

3         4      99           yyy          5.0        2001       2001   

4         5      99           xxx          1.0        2020       2012   

5         6      13           zzz          3.2        2015       2000   

6         7      12           zzz          1.0        2000       2000   

7         8      88           eee          2.2        2003       2001   

8         9      45           eee          0.2        2004       2001   


  last_year  nb_fave_rating  

0      2020             1.0  

1      2020             1.0  

2      2020             1.0  

3      2020             1.0  

4      2020             1.0  

5      2015             1.0  

6      2015             1.0  

7      2020             0.0  

8      2020             0.0  


查看完整回答
反對(duì) 回復(fù) 2023-09-05
?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

  • Grayrigel的解決方案(使用)是最快的解決方案。map

  • 用于獲取每個(gè)的.groupby評(píng)分計(jì)數(shù)>=3restaurant_id

  • .merge?positive_reviews回到df.

positive_reviews = df[df.star_rating >= 3.0 ].groupby('restaurant_id', as_index=False).agg({'star_rating': 'count'}).rename(columns={'star_rating': 'nb_fave_rating'})


# join back to df

df = df.merge(positive_reviews, how='left', on='restaurant_id').fillna(0)


# display(df)

? rating_id user_id restaurant_id? star_rating rating_year first_year last_year? nb_fave_rating

0? ? ? ? ?1? ? ? 56? ? ? ? ? ?xxx? ? ? ? ? 2.3? ? ? ? 2012? ? ? ?2012? ? ? 2020? ? ? ? ? ? ?1.0

1? ? ? ? ?2? ? ? 13? ? ? ? ? ?xxx? ? ? ? ? 3.7? ? ? ? 2012? ? ? ?2012? ? ? 2020? ? ? ? ? ? ?1.0

2? ? ? ? ?3? ? ? 56? ? ? ? ? ?yyy? ? ? ? ? 1.2? ? ? ? 2020? ? ? ?2001? ? ? 2020? ? ? ? ? ? ?1.0

3? ? ? ? ?4? ? ? 99? ? ? ? ? ?yyy? ? ? ? ? 5.0? ? ? ? 2001? ? ? ?2001? ? ? 2020? ? ? ? ? ? ?1.0

4? ? ? ? ?5? ? ? 99? ? ? ? ? ?xxx? ? ? ? ? 1.0? ? ? ? 2020? ? ? ?2012? ? ? 2020? ? ? ? ? ? ?1.0

5? ? ? ? ?6? ? ? 13? ? ? ? ? ?zzz? ? ? ? ? 3.2? ? ? ? 2015? ? ? ?2000? ? ? 2015? ? ? ? ? ? ?1.0

6? ? ? ? ?7? ? ? 12? ? ? ? ? ?zzz? ? ? ? ? 1.0? ? ? ? 2000? ? ? ?2000? ? ? 2015? ? ? ? ? ? ?1.0

7? ? ? ? ?8? ? ? 88? ? ? ? ? ?eee? ? ? ? ? 2.2? ? ? ? 2003? ? ? ?2001? ? ? 2020? ? ? ? ? ? ?0.0

8? ? ? ? ?9? ? ? 45? ? ? ? ? ?eee? ? ? ? ? 0.2? ? ? ? 2004? ? ? ?2001? ? ? 2020? ? ? ? ? ? ?0.0

%timeit比較

給定 9 行數(shù)據(jù)框,df在問(wèn)題中

# create a test dataframe of 1,125,000 rows

dfl = pd.concat([df] * 125000).reset_index(drop=True)


# test with transform

def add_rating_transform(df):

? ? return df.groupby('restaurant_id')['star_rating'].transform(lambda x: int((x>=3).sum()))



%timeit add_rating_transform(dfl)

[out]:

222 ms ± 9.01 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)


# test with map

def add_rating_map(df):

? ? filtered_data = df[df['star_rating'] >= 3]

? ? d = filtered_data.groupby('restaurant_id')['star_rating'].count().to_dict()

? ? return df['restaurant_id'].map(d).fillna(0).astype(int)



%timeit add_rating_map(dfl)

[out]:

105 ms ± 1.56 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)


# test with merge

def add_rating_merge(df):

? ? positive_reviews = df[df.star_rating >= 3.0 ].groupby('restaurant_id', as_index=False).agg({'star_rating': 'count'}).rename(columns={'star_rating': 'nb_fave_rating'})

? ? return df.merge(positive_reviews, how='left', on='restaurant_id').fillna(0)?



%timeit add_rating_merge(dfl)

[out]:

639 ms ± 26.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)


查看完整回答
反對(duì) 回復(fù) 2023-09-05
?
侃侃爾雅

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊

統(tǒng)計(jì)評(píng)分 >= 3.0 的情況

df['nb_fave_rating'] = df.groupby('restaurant_id')['star_rating'].transform(lambda x: x.ge(3.0).sum()).astype(np.int)



查看完整回答
反對(duì) 回復(fù) 2023-09-05
  • 4 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)