出现报错 section_fin = section_fin.drop(['公司代码'], axis=1) ^^^^^^^^^^^^^^^^ AttributeError: 'function' object has no attribute 'drop',如何修改
时间: 2023-08-05 19:07:11 浏览: 77
这个报错表明你正在尝试对一个函数对象使用`drop`方法,而不是一个DataFrame对象。请确保`section_fin`是一个正确加载的DataFrame对象,并且没有与之重名的函数或变量。
你可以尝试按照以下步骤进行修复:
1. 确保你已经正确加载了pandas库,并使用正确的方法加载了数据到`section_fin`。
2. 检查在调用`drop`方法之前是否对`section_fin`进行了其他操作,可能导致其变为一个函数对象。
3. 如果你之前定义了一个名为`drop`的函数或变量,建议更改其名称,以避免与pandas的`drop`方法发生冲突。
如果问题仍然存在,请提供更多代码片段以及完整的错误信息,以便我能够更好地帮助你解决问题。
相关问题
def get_cve_data(project_type="java"): cve_data = None if project_type == "java": cve_data = getattr(g, '_java_cve_data', None) if cve_data is None: with open(java_vul_fixing_file) as fin: cve_data = g._java_cve_data = json.load(fin) elif project_type == "c": cve_data = getattr(g, '_c_cve_data', None) if cve_data is None: with open(c_vul_fixing_file) as fin: cve_data = g._c_cve_data = json.load(fin) return cve_data
这段代码定义了一个名为 `get_cve_data` 的函数,用于获取特定项目类型的 CVE 数据。函数接受一个可选的参数 `project_type`,默认值为 `"java"`。
函数首先定义了一个变量 `cve_data` 并将其初始化为 `None`。然后,根据 `project_type` 的值,它会从全局对象 `g` 中获取对应项目类型的 CVE 数据。如果 `cve_data` 为 `None`,则说明还没有加载过该项目类型的数据,函数会从相应的文件中读取 JSON 数据,并将其保存到 `g` 对象中。
最后,函数返回获取到的 CVE 数据。
这段代码假设在全局对象 `g` 中存在用于存储 Java 和 C 项目的 CVE 数据的属性 `_java_cve_data` 和 `_c_cve_data`。它还假设有两个文件路径 `java_vul_fixing_file` 和 `c_vul_fixing_file` 分别指向存储 Java 和 C 项目的 CVE 数据的 JSON 文件。
你可以根据需要,修改文件路径和属性名称以适应你的代码结构和数据存储方式。
请优化以下代码sql = """update luzhi_jilu_xijie set isDelete='完成' where id_jilu_all='{}'""".format(id_jilu_all) co.to_sql(sql) sql = """update luzhi_jilu_xijie set fin_shiji=0 where (kind_shu='文字' or kind_shu='图像') and (nr_shiji is not null or nr_shiji!='') and id_jilu_all='{}'""".format(id_jilu_all) co.to_sql(sql) conn.commit()
可以将两个 SQL 语句合并为一个,使用 CASE WHEN 语句来实现条件判断和字段更新,可以减少数据库交互次数,提高执行效率。优化后的 SQL 语句如下:
```
UPDATE luzhi_jilu_xijie
SET isDelete = CASE
WHEN id_jilu_all = '{}' THEN '完成'
ELSE isDelete
END,
fin_shiji = CASE
WHEN (kind_shu='文字' OR kind_shu='图像') AND (nr_shiji IS NOT NULL OR nr_shiji!='') AND id_jilu_all='{}' THEN 0
ELSE fin_shiji
END
WHERE id_jilu_all='{}'
OR (kind_shu='文字' OR kind_shu='图像') AND (nr_shiji IS NOT NULL OR nr_shiji!='') AND id_jilu_all='{}'
```
这样就可以用一条 SQL 语句完成两个更新操作,减少了交互次数,提高了效率。
阅读全文