gpt4 book ai didi

python - 基于另一列过滤 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:09 24 4
gpt4 key购买 nike

这可能是一个基本问题,但我无法找到解决方案。我有两个数据框,具有相同的行和列,称为交易量和价格,如下所示

数量

Index    ProductA    ProductB     ProductC     ProductD    Limit
0 100 300 400 78 100
1 110 370 20 30 100
2 90 320 200 121 100
3 150 320 410 99 100
....

价格

Index    ProductA    ProductB     ProductC     ProductD    Limit
0 50 110 30 90 0
1 51 110 29 99 0
2 49 120 25 88 0
3 51 110 22 96 0
....

我想将 0 分配给价格数据框的“单元格”,该单元格对应的交易量小于“限制”列上的数量

所以,理想的输出是

价格

Index    ProductA    ProductB     ProductC     ProductD    Limit
0 50 110 30 0 0
1 51 110 0 0 0
2 0 120 25 88 0
3 51 110 22 0 0
....

我试过了

import pandas as pd
import numpy as np
d_price = {'ProductA' : [50, 51, 49, 51], 'ProductB' : [110,110,120,110],
'ProductC' : [30,29,25,22],'ProductD' : [90,99,88,96], 'Limit': [0]*4}
d_volume = {'ProductA' : [100,110,90,150], 'ProductB' : [300,370,320,320],
'ProductC' : [400,20,200,410],'ProductD' : [78,30,121,99], 'Limit': [100]*4}
Prices = pd.DataFrame(d_price)
Volumes = pd.DataFrame(d_volume)

Prices[Volumes > Volumes.Limit]=0

但我没有对价格数据框进行任何更改...显然我很难理解 boolean 切片,任何帮助都会很棒

最佳答案

问题出在

Prices[Volumes > Volumes.Limit]=0

由于每一行的限制各不相同,因此您应该使用,例如,像下面这样应用:

Prices[Volumes.apply(lambda x : x>x.Limit, axis=1)]=0

关于python - 基于另一列过滤 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26666825/

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