Python 为什么我的代码有效(使用函数过滤数据帧)?

Python 为什么我的代码有效(使用函数过滤数据帧)?,python,pandas,Python,Pandas,首先,我创建了一个带有lat-Lon输入的函数,以过滤未进入特定区域的船舶 check_devaiation_notInZone(LAT, LON) 它接受两个输入,如果船舶未进入特定区域,则返回True check_devaiation_notInZone(LAT, LON) 其次,我得到了许多船上的数据,其中一个标题是Lat,另一个标题是CSV格式的Lon。因此,我需要将两列中的数据放入函数中,并创建另一列来存储函数的输出 我看了之后。我找到了解决方案df1['deviation']=d

首先,我创建了一个带有lat-Lon输入的函数,以过滤未进入特定区域的船舶

check_devaiation_notInZone(LAT, LON)
它接受两个输入,如果船舶未进入特定区域,则返回True

check_devaiation_notInZone(LAT, LON)
其次,我得到了许多船上的数据,其中一个标题是Lat,另一个标题是CSV格式的Lon。因此,我需要将两列中的数据放入函数中,并创建另一列来存储函数的输出

我看了之后。我找到了解决方案
df1['deviation']=df1.apply(lambda行:check\u deviation\u notInZone(行['lation'],行['Longitude']),轴=1)


但我不知道为什么它会起作用。有人能解释一下apply()中的内容吗?

lambda函数与普通函数一样,但它没有名称,只能在定义它的地方使用

lambda row: check_devaiation_notInZone(row['Latitude'], row['Longitude'])
同:

def anyname(row):
    return check_devaiation_notInZone(row['Latitude'], row['Longitude'])

因此,在应用程序中,您只需调用另一个函数
check_deviation_notInZone
,参数为
row['Latitude',row['Longitude']
,对于
df1
中的每一行,运行
check_deviation_notInZone
,并使用
纬度
经度
列中的值,并将结果保存在
偏差
列中
axis=1
意味着在每一行而不是每一列上应用函数。为什么行['Latitude'],行['Latitude']可以引用列?函数将以“行”作为输入,但此代码中的输入是什么:df1['deviation']=df1.apply(lambda行:check\u deviation\u notInZone(行['lation'],行['Longitude']),轴=1)