簡體   English   中英

僅在某些行的列上應用pandas函數

[英]Apply pandas function on column only on certain rows

|   user  |       category    | val  | 
| ------  | ------------------| -----|
| user 1  | c1                |   3  |  
| user 1  | c2                |   4  |
| user 1  | c3                |   8  | 
| user 2  | c1                |   5  |
| user 2  | c2                |   9  | 
| user 2  | c3                |   10 |

假設我想將函數f應用於val列。 返回數據幀的最佳方法是什么,例如,f僅應用於類別為c1的值?

|   user  |       category    | val     |
| ------  | ------------------| -----   | 
| user 1  | c1                |   f(3)  | 
| user 1  | c2                |   4     | 
| user 1  | c3                |   8     | 
| user 2  | c1                |  f(5)   | 
| user 2  | c2                |   9     |
| user 2  | c3                |   10    | 

使用numpy.where

df['val'] = np.where(df['category'] == 'c1', df['val'].apply(f), df['val'])

或使用loc過濾:

mask = df['category'] == 'c1'
df.loc[mask, 'val'] = df.loc[mask, 'val'].apply(f)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM