python-熊猫:groupby,并创建一个新的列,将聚合应用于两列

我在将agg应用于groupby熊猫数据框时遇到困难.

我有一个像这样的数据框df:

order_id    distance_theo    bird_distance 
      10              100               80
      10               80               80
      10               70               80
      11               90               70
      11               70               70
      11               60               70
      12              200              180
      12              150              180
      12              100              180
      12               60              180

我想对order_id进行分组,并通过将每个组中第一行的distance_theo除以每个组中第一行(或任意行,因为在一个组中只有bird_distance的一个值)来使新的行变成乌鸦.

order_id    distance_theo    bird_distance    crow
      10              100               80    1.25
      10               80               80    1.25
      10               70               80    1.25
      11               90               70    1.29
      11               70               70    1.29
      11               60               70    1.29
      12              200              180    1.11
      12              150              180    1.11
      12              100              180    1.11
      12               60              180    1.11

我的尝试:
df.groupby(‘order_id’).agg({‘crow’,lambda x:x.distance_theo.head(1)/ x.bird_distance.head(1)})

但是我得到一个错误:

'Series' object has no attribute 'distance_theo'

我该如何解决?感谢您的任何建议!

解决方法:

首先使用groupby:

s = df.groupby('order_id').transform('first')
df.assign(crow=s.distance_theo.div(s.bird_distance))

   order_id  distance_theo  bird_distance      crow
0        10            100             80  1.250000
1        10             80             80  1.250000
2        10             70             80  1.250000
3        11             90             70  1.285714
4        11             70             70  1.285714
5        11             60             70  1.285714
6        12            200            180  1.111111
7        12            150            180  1.111111
8        12            100            180  1.111111
9        12             60            180  1.111111
上一篇:使用熊猫的Groupby df列


下一篇:链表析构函数C.