gpt4 book ai didi

python - 使用从 Postgres 中提取的数据框在 Python 中创建计算列(使用 If 语句)

转载 作者:行者123 更新时间:2023-11-29 13:11:21 26 4
gpt4 key购买 nike

Python 相当新,我正在尝试使用 If 函数在我的 DataFrame 上创建一个计算列。

我已经尝试使用直接从 DataFrame 引用的字段,以及将它们分配给变量并将它们转换为系列(如下面的代码所示):

f4 =(使用 pscyopg2 和 SQL 查询从我的 Postgres 数据库中提取的 DataFrame)(379, 7)

n = f4['id']

wv = f4['watermark_value']

anet = f4['a_net_revenue']

bnet = f4['b_net_revenue']

def adj_calc():

return anet-bnet-wv if bnet-wv<0 else bnet-wv

f4['watermark_adj'] = adj_calc()

我收到以下错误:“ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”

通过我的研究,我发现当您尝试直接从 DataFrame 进行计算时,您可能会在 Pandas 中遇到问题,但我很难找到解决方案或相关信息我应该使用哪种数据类型。

本质上,我试图在 f4 数据名上创建一个遵循上述逻辑的计算列。

谢谢!

最佳答案

首先用减法创建新系列 s 然后使用 numpy.wherewhere :

s = bnet-wv
f4['watermark_adj'] = np.where(s<0, anet-s, s)

或者:

s = bnet-wv
f4['watermark_adj'] = s.where(s<0, anet-s)

关于python - 使用从 Postgres 中提取的数据框在 Python 中创建计算列(使用 If 语句),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54248685/

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