python - 使用从 Postgres 提取的数据框在 Python 中创建计算列(带有 If 语句)
问题描述
相当新Python
,我正在尝试DataFrame
使用 If 函数创建一个计算列。
我尝试使用从 中直接引用的字段DataFrame
,并将它们分配给变量并将它们转换为系列(如下面的代码所示):
f4 = (使用 pscyopg2 和 SQL 查询从我的 Postgres 数据库中提取的数据帧) (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
.
本质上,我正在尝试在 f4 数据帧上创建一个遵循上述逻辑的计算列。
谢谢!
解决方案
首先使用减法创建新系列s
,然后使用numpy.where
or where
:
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)
推荐阅读
- r - 仅当它们不同时按 ID 折叠列并粘贴值
- python - 如何在 Flask-sqlalchemy 中初始化元数据对象?
- testing - 如何使用插件旋钮对 Storybook 进行视觉回归测试?
- c# - 如何创建一个项目来为支持 iOS、Android 和 UWP 的 Xamarin Forms 创建 Nuget 包?
- php - Wordpress 错误 - 抱歉,您无权访问此页面。将网站从一个域迁移到另一个域后
- python - 时间序列数据:如何找到一个值的平均重复率?
- python - 根据匹配对不同工作表/文件的值求和
- c++ - 获取字符数组地址然后转换为指针char
- microsoft-graph-api - ms graph php sdk消息对象检查是否有附件失败
- java - Kotlin/JVM 或 Kotlin (Java) -- IntelliJ IDEA