[英]Filter and divide column by value
I am wanting to divide column a
by 10 when groupby id
= 2 and update the original df
.我想在 groupby id
= 2 时将a
列除以 10 并更新原始df
。 Not too sure how to do this one!不太清楚如何做到这一点!
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
desired dataframe所需的数据框
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
Using a lambda使用 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.