python - 使用 Python 3 中的“If”语句和其他列中的其他行来生成其他列的值
问题描述
问候,
如果这个问题似乎是重复的,请原谅我,但我找不到符合我确切要求的现有问题的答案:
我想使用其他列的行值来生成列的行值。为此,我制作了一个辅助函数“f”:
def f(row):
if row['column1'] == 3:
val = 0
if row['column2'] <= 5:
if row['column3'] <= 4:
if row['column4'] >= 3:
val = 3
if row['column5'] == 2:
val = 5
if row['column6'] == 0:
if row['column7'] <= 0:
if row['column8'] <= -1:
val = 4
else:
val = 9
return val
我将我的辅助函数应用于我的数据框,如下所示:
df['column12'] = df.apply(f, axis=1)
这产生了错误代码:
UnboundLocalError: ("局部变量 'val' 在赋值前被引用", '发生在索引 0')
我哪里错了?
解决方案
这两个 if 在输入一次后失败,因此您的 val 值永远不会被初始化,因此会出现错误。
if row['column2'] <= 5:
if row['column3'] <= 4:
if row['column4'] >= 3:
val = 3
if row['column6'] == 0:
if row['column7'] <= 0:
if row['column8'] <= -1:
val 4
为了解决这个问题,在函数的开头声明和初始化 val 。
推荐阅读
- snowflake-cloud-data-platform - 雪花创建表,其中包含从 Select 语句填充的列子集
- python - 如何将json输出写入python中的csv文件?
- ruby-on-rails - 无法打开到 localhost:9200 的 TCP 连接(无法分配请求的地址 - “localhost”端口 9200 的连接(2))
- go - Golang - 我如何从 mux 获得授权?
- sql-server - 如何像在常规 SQL Server 上一样在 Sql Azure 上强制进行传输中加密?
- javascript - React 原生拖放位置足球训练
- c# - 合并标记间隔的算法
- swiftui - SwiftUI - EditMode 和 PresentationMode 环境
- c# - Ajax 调用未命中 C# 方法后面的代码
- sitecore - Sitecore 页面仅在登录时显示