![](/img/trans.png)
[英]How to apply a lambda function to certain rows in a data frame in pandas and create a new column
[英]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.