[英]Filter and divide column by value
我想在 groupby id
= 2 時將a
列除以 10 並更新原始df
。 不太清楚如何做到這一點!
df
date id a b c d
0 1/1/2000 1 10 20 10.0 11
1 1/1/2000 2 100 21 1.0 11
2 1/1/2000 3 15 20 14.0 11
3 1/1/2000 4 10 24 13.0 11
4 1/2/2000 1 10 25 10.0 11
5 1/2/2000 2 100 20 13.0 15
6 1/2/2000 3 10 26 22.0 11
7 1/2/2000 4 10 20 16.0 13
8 1/3/2000 1 10 20 10.0 11
9 1/3/2000 2 100 20 13.0 11
10 1/3/2000 3 10 20 18.0 11
11 1/3/2000 4 10 20 10.0 11
所需的數據框
date id a b c d
0 1/1/2000 1 10 20 10.0 11
1 1/1/2000 2 10 21 1.0 11
2 1/1/2000 3 15 20 14.0 11
3 1/1/2000 4 10 24 13.0 11
4 1/2/2000 1 10 25 10.0 11
5 1/2/2000 2 10 20 13.0 15
6 1/2/2000 3 10 26 22.0 11
7 1/2/2000 4 10 20 16.0 13
8 1/3/2000 1 10 20 10.0 11
9 1/3/2000 2 10 20 13.0 11
10 1/3/2000 3 10 20 18.0 11
11 1/3/2000 4 10 20 10.0 11
沿第一個軸使用布爾索引並就地更新列a
:
df.loc[df['id'].eq(2), 'a'] /= 10
使用 lambda
df['a'] = df.apply(lambda x: x['a']/100 if x['id']==2 else x['a'],axis=1)
df
+----------+------+-----+-----+-----+-----+
| | id | a | b | c | d |
+==========+======+=====+=====+=====+=====+
| 1/1/2000 | 1 | 10 | 20 | 10 | 11 |
| 1/1/2000 | 2 | 1 | 21 | 1 | 11 |
| 1/1/2000 | 3 | 15 | 20 | 14 | 11 |
| 1/1/2000 | 4 | 10 | 24 | 13 | 11 |
| 1/2/2000 | 1 | 10 | 25 | 10 | 11 |
| 1/2/2000 | 2 | 1 | 20 | 13 | 15 |
| 1/2/2000 | 3 | 10 | 26 | 22 | 11 |
| 1/2/2000 | 4 | 10 | 20 | 16 | 13 |
| 1/3/2000 | 1 | 10 | 20 | 10 | 11 |
| 1/3/2000 | 2 | 1 | 20 | 13 | 11 |
| 1/3/2000 | 3 | 10 | 20 | 18 | 11 |
| 1/3/2000 | 4 | 10 | 20 | 10 | 11 |
+----------+------+-----+-----+-----+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.