gpt4 book ai didi

python - Pandas 数据帧将值除以另一个数据帧中的匹配值

转载 作者:太空狗 更新时间:2023-10-30 02:55:51 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框 A

bucket  value   
1 0.001855
1 0.000120
2 0.000042
2 0.001888

和一个看起来像这样的数据框 B

bucket  num 
1 .5
2 .3

我想在 A 中创建一个列,该列的所有值除以 B 中的 num 与桶相匹配。我该怎么做?

最佳答案

更新: 回答了来自 the comment 的以下问题:

What if A is a multiindex? With ['bucket1','bucket2'] as index but we only care for bucket1?

In [140]: A
Out[140]:
value
bucket1 bucket2
1 10 0.001855
11 0.000120
2 12 0.000042
13 0.001888

In [141]: B
Out[141]:
bucket num
0 1 0.5
1 2 0.3

In [142]: A['new'] = A.value / A.reset_index().iloc[:, 0].map(B.set_index('bucket').num).values

In [143]: A
Out[143]:
value new
bucket1 bucket2
1 10 0.001855 0.003710
11 0.000120 0.000240
2 12 0.000042 0.000140
13 0.001888 0.006293

旧答案:

你可以使用Series.map()方法:

In [61]: A['new'] = A.value.div(A.bucket.map(B.set_index('bucket').num))

In [62]: A
Out[62]:
bucket value new
0 1 0.001855 0.003710
1 1 0.000120 0.000240
2 2 0.000042 0.000140
3 2 0.001888 0.006293

或作为虚拟列:

In [60]: A.assign(new=A.value/A.bucket.map(B.set_index('bucket').num))
Out[60]:
bucket value new
0 1 0.001855 0.003710
1 1 0.000120 0.000240
2 2 0.000042 0.000140
3 2 0.001888 0.006293

解释:

In [65]: B.set_index('bucket')
Out[65]:
num
bucket
1 0.5
2 0.3

In [66]: A.bucket.map(B.set_index('bucket').num)
Out[66]:
0 0.5
1 0.5
2 0.3
3 0.3
Name: bucket, dtype: float64

关于python - Pandas 数据帧将值除以另一个数据帧中的匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41290932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com