熊猫将每N列除以固定列

时间:2018-07-19 12:35:37

标签: python pandas dataframe

给出这样的数据框

   ImageId | Width | Height | lb0 | x0 | y0 | lb1 | x1 | y1 | lb2 | x2 | y2
0  abc     | 200   | 500    | ijk | 4  | 8  | zyx | 15 | 16 | www | 23 | 42
1  def     | 300   | 800    | ijk | 42 | 23 | zyx | 16 | 15 | www | 8  | 4
2  ghi     | 700   | 400    | ijk | 9  | 16 | zyx | 17 | 24 | www | 43 | 109
3  jkl     | 500   | 100    | ijk | 42 | 23 |     |    |    |     |    |
...

问题:

  • 如何将列[x0, x1]除以[Width][y0, y1]除以[Height]

我可以通过以下方式为所有x*列设置常量值

df.iloc[:, 4::3] = SOME_SCALAR_VALUE

但是我想做的是

df.iloc[:, 4::3] = df.iloc[:, 4::3] / df['Width']

返回

  

ValueError:操作数不能与形状(62936,)(8,)一起广播

2 个答案:

答案 0 :(得分:2)

divaxis=0参数一起使用:

df.iloc[:, 4::3].div(df['Width'], axis=0)

输出:

         x0        x1        x2
0  0.020000  0.075000  0.115000
1  0.140000  0.053333  0.026667
2  0.012857  0.024286  0.061429

答案 1 :(得分:0)

这应该做

df.iloc[:,4:3] = df.iloc[:,4:3].apply(lambda x: x/df['Width'],axis=0)