简体   繁体   English

按值过滤和划分列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM