我正在分析一些逐州汇总的联邦数据。行标签是州名,列标签是构面标签。单元格值是人口计数。这个df看起来像:
+---------------------------------------+
| f1 f2 |
| Alabama 127 321 |
| Alaska 84 12 |
| Arizona 295 12 |
| Arkansas 82 71 |
+---------------------------------------+
我有另一个数据框,其中的行也是状态名称,但是单个列是该状态的填充。这个df看起来像:
+--------------------------------+
| Counts|
| Alabama 146 |
| Alaska 89 |
| Arizona 314 |
| Arkansas 85 |
+--------------------------------+
我想将第一个数据帧中的每一列除以第二个数据帧中的值。这使人口的状态发生率数据正常化。
我怎样才能在熊猫中实现这一目标?我有蟒蛇经验,但是一个熊猫新手,无法弄清楚。
TIA, 特拉维斯
答案 0 :(得分:1)
将.div
与axis=0
:
>>> left
f1 f2
Alabama 127 321
Alaska 84 12
Arizona 295 12
Arkansas 82 71
>>> right
Counts
Alabama 146
Alaska 89
Arizona 314
Arkansas 85
>>> left.div(right['Counts'], axis=0)
f1 f2
Alabama 0.870 2.199
Alaska 0.944 0.135
Arizona 0.939 0.038
Arkansas 0.965 0.835
请注意,这会将右侧与左侧的索引对齐,因此下面的结果与上面的结果相同:
>>> left.div(right.loc[::-1, 'Counts'], axis=0) # permute the indices
f1 f2
Alabama 0.870 2.199
Alaska 0.944 0.135
Arizona 0.939 0.038
Arkansas 0.965 0.835