python,根据几个条件筛选数据帧

python,根据几个条件筛选数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据帧: 我想根据以下条件对其进行过滤: 创建的角度=范围(87-92) GDT 1和GDT 2之间的距离>=2*无人机和中点之间的距离 到目前为止,我尝试了以下方法(最后一种方法): class DataFrameToGeneratedList: 定义初始值(self,lat_lon_list=None,lat_list=None,lon_list=None): 如果lon_列表为“无”: lon_列表=[] 如果lat_列表为“无”: lat_列表=[] 如果lat_lon_lis

我有以下数据帧:

我想根据以下条件对其进行过滤:

创建的角度=范围(87-92)

GDT 1和GDT 2之间的距离>=2*无人机和中点之间的距离

到目前为止,我尝试了以下方法(最后一种方法):

class DataFrameToGeneratedList:
定义初始值(self,lat_lon_list=None,lat_list=None,lon_list=None):
如果lon_列表为“无”:
lon_列表=[]
如果lat_列表为“无”:
lat_列表=[]
如果lat_lon_list为None:
lat_lon_list=[]
self.lat_lon_list=lat_lon_list
self.lat\u list=lat\u list
self.lon_list=lon_list
#这里有些不相关的方法。。。
def创建_点_df(自):
#将点列表转换为xy坐标。
xy_lat_lon_list=[将self.lat_lon_list中的l_xy转换为l_xy(l_xy)]
#gdt1和xy中每个点之间的中点。
中点_xy=[获取xy平面列表中点的中点(gdt1_xy,点)]
#将中点从xy转换为地质点。
中点=[将中点中的xy_点转换为横向(xy_点)]
#从gdt 1到每个点的距离。
距离=[获取self.lat\u lon\u列表中geo\u点的距离(gdt1,geo\u点)]
#横向列表中每个点的角度列表。
角度列表=[xy平面列表中点的点之间的角度(阵列gdt1,阵列uav,点)
#获取无人机到创建的每个中点的距离。
中点到无人机=[获取中点到中点的距离(无人机,中点)]
数据记录={
“纬度”:self.lat_列表,
“经度”:self.lonu列表,
“已创建角度”:角度列表,
“XY中的点”:XY平面列表,
“GDT 1和GDT 2的中点”:中点_xy,
“GDT 1和GDT 2之间的距离”:距离,
“无人机与中点之间的距离”:中点至无人机
}
未过滤的数据帧=局部数据帧(数据帧)
打印(未过滤的)
返回未过滤的_df
def过滤器测向结果(自我、完成测向):
断言isinstance(完成的数据帧)
完成的直径=完成的直径
已完成测向=(已完成测向[(已完成测向['Angle Created']>=88)和(已完成测向['Angle Created']=(
2*已完成测向['无人机与中点之间的距离]]
打印(已完成)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
a=DataFrameToGeneratedList()
a、 生成\u点\u列表(a.生成\u pd())
df=a.创建点
a、 过滤结果(完成的结果=df)
此代码的输出是一个没有错误的空数据库

空数据帧
列:[纬度、经度、创建的角度、XY点、GDT 1和GDT 2的中点、GDT 1和GDT 2之间的距离、UAV和中点之间的距离]
索引:[]

语法应该如下所示:

finished_df = (
    finished_df[
            (finished_df['Angle Created'] >= 88) &
            (finished_df['Angle Created'] <= 95) & 
            (finished_df['Distance between GDT 1 and GDT 2'] >= (2 * finished_df['Distance between UAV and MidPoint']))]
    )
finished_df=(
成品[
(已完成测向['已创建角度]>=88)&
(已完成测向['已创建角度]=(2*已完成测向['无人机与中点之间的距离])]
)
其中每个条件都用括号括起来

可以考虑为单独的条件创建,以简化筛选器语句。