熊猫个性化groupby数据算术操作

时间:2020-05-16 14:35:49

标签: python pandas

这是我的数据框:

    id_1 id_2  cost  id_3 other
0      1    a    30    10     a
1      1    a    30    20     f
2      1    a    30    30     h
3      1    b    60    40     b
4      1    b    60    50     m
5      2    a    10    60     u
6      2    a    10    70     l
7      2    b     8    80     u
8      3    c    15    90     y
9      3    c    15   100     l
10     4    d     8   110     m
11     5    e     5   120     v

我想要一个groupby(['id_1', 'id_2']),但

  • 在这些行的每行之间划分cost号(在同一组的每一行中都相同)(例如,在三个30/3=10值之间划分a)。 / li>

我期望这样的事情:

    id_1 id_2   cost  id_3 other
0      1    a     10    10     a
1      1    a     10    20     f
2      1    a     10    30     h
3      1    b     30    40     b
4      1    b     30    50     m
5      2    a      5    60     u
6      2    a      5    70     l
7      2    b      8    80     u
8      3    c    7.5    90     y
9      3    c    7.5   100     l
10     4    d      8   110     m
11     5    e      5   120     v

这是一个类似的问题 this link。但是现在我希望在处理一组行内的数据时具有更大的灵活性。

我该如何进行?

致谢!

1 个答案:

答案 0 :(得分:2)

让我们做transform

df.cost/=df.groupby(['id_1','id_2']).cost.transform('count')
df
    id_1 id_2  cost  id_3 other
0      1    a  10.0    10     a
1      1    a  10.0    20     f
2      1    a  10.0    30     h
3      1    b  30.0    40     b
4      1    b  30.0    50     m
5      2    a   5.0    60     u
6      2    a   5.0    70     l
7      2    b   8.0    80     u
8      3    c   7.5    90     y
9      3    c   7.5   100     l
10     4    d   8.0   110     m
11     5    e   5.0   120     v