python - 为什么python中的方法不起作用,但代码之外的方法起作用?
问题描述
我需要处理一个表,我编写了一个代码来删除'A1_TOP'
col 或 ' A2_TOP'
col 中的行-
。
代码:
df = pd.read_csv('SomeFile.txt')
df = df.loc[(df['A1_TOP'] != gap) | (df['A2_TOP'] != gap)]
当我将它放入代码时它工作正常。从数据框中,值“-”的行消失。但是我尝试创建一个方法,因为我使用了这段代码一段时间,干你知道... :) 当我把它放到方法中并尝试使用它时,我没有收到任何错误,只是一个没有删除行的数据框。仍有差距。
这是调用该方法的方式:
#Load file
df = pd.read_csv('SomeFile.txt')
#creating method
def delete_gaps(df):
df = df.loc[(df['A1_TOP'] != gap) | (df['A2_TOP'] != gap)]
#df = df.loc[(df['A1_TOP'] != gapVariant) | (df['A2_TOP'] != gapVariant)]
return df
#method call
delete_gaps(df)
我怀疑我在参数上做错了什么?或者也许是打电话?我试过df = delete_gaps(df)
了,但显然 df 是空的。
如果有人可以向我解释什么是问题,为什么会出现问题,我将不胜感激。
PS我没有把桌子放在问题上,因为我认为这不是问题。超越方法的代码工作正常。
解决方案
您需要在您的方法中执行此操作:
def delete_gaps(df):
df = df.copy(deep=True)
df = df.loc[(df['A1_TOP'] != gap) | (df['A2_TOP'] != gap)]
return df
如果您将数据帧传递给函数并对其进行操作并返回相同的数据帧,您将在修改后的版本中获得相同的数据帧。如果您不想更改原始数据帧,最好的办法是复制原始数据框。
我使用了复制方法,参数“deep=True”复制了数据框及其内容。
你可以在这里阅读更多:http: //pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.copy.html
推荐阅读
- c# - 我的代码没有根据从组合框 c# 中的选择切换到所需的功能
- python-3.x - 使用按位函数,然后尝试进行二进制补码但没有成功
- r - ggplot图例没有出现
- node.js - mongoose-mpath 模块正在创建文档但未分配给它的父级
- api - 在微服务中将数据分组在一起
- python - 我可以在 Python 列表理解中创建一个变量吗?
- flutter - 建议:添加 'tools:replace="android:name"'
AndroidManifest.xml 中要覆盖的元素 - nativescript - Nativescript 饼图图例项水平显示
- java - @PathVariable 不加载资源 [CSS & JS] - Thymeleaf
- javascript - 反应原生推送通知本地通知未显示在真实设备上