我正在分析一些按州汇总的联邦数据。行标签是状态名称,列标签是构面标签。单元格值是总体计数。这个 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 |
+--------------------------------+
我想将第一个数据框中的每一列除以第二个数据框中的值。这按人口标准化了州发病率数据。
如何在 pandas 中实现这一点?我在 python 方面经验丰富,但作为 pandas 新手,无法弄清楚。
TIA, 特拉维斯
最佳答案
使用.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
关于python - 使用来自不同数据帧的数据规范数据帧中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26539177/