首页 > 解决方案 > 如何根据两个不同列的值从 pandas df 中删除行

问题描述

我正在阅读一个包含飞行记录的大型 CSV 文件,我想删除所有没有“Origin_Airport_Code”或“Destination_Airport_Code”作为 ORD 的行。之后,我还想将“年份”和“航班日期”列合并到日期时间中,我想按日期时间索引航班。

我不确定要尝试什么,因为我是 python 和 pandas 的新手

data = pd.read_csv("groundhog_query.csv") 

data.columns
Index(['Year', 'Flight_Date', 'Day_Of_Year', 'Unique_Carrier_ID', 'Airline_ID',
       'Tail_Number', 'Flight_Number', 'Origin_Airport_ID', 'Origin_Market_ID',
       'Origin_Airport_Code', 'Origin_State', 'Destination_Airport_ID',
       'Destination_Market_ID', 'Destination_Airport_Code', 'Dest_State',
       'Scheduled_Dep_Time', 'Actual_Dep_Time', 'Dep_Delay', 'Pos_Dep_Delay',
       'Scheduled_Arr_Time', 'Actual_Arr_Time', 'Arr_Delay', 'Pos_Arr_Delay',
       'Combined_Arr_Delay', 'Can_Status', 'Can_Reason', 'Div_Status',
       'Scheduled_Elapsed_Time', 'Actual_Elapsed_Time', 'Carrier_Delay',
       'Weather_Delay', 'Natl_Airspace_System_Delay', 'Security_Delay',
       'Late_Aircraft_Delay', 'Div_Airport_Landings', 'Div_Landing_Status',
       'Div_Elapsed_Time', 'Div_Arrival_Delay', 'Div_Airport_1_ID',
       'Div_1_Tail_Num', 'Div_Airport_2_ID', 'Div_2_Tail_Num',
       'Div_Airport_3_ID', 'Div_3_Tail_Num', 'Div_Airport_4_ID',
       'Div_4_Tail_Num', 'Div_Airport_5_ID', 'Div_5_Tail_Num'],
      dtype='object')

这就是列的组织方式。我可以做一些 if than 语句或循环吗?谢谢您的帮助

标签: pythonpandascsvif-statement

解决方案


根据这两列过滤行,删除起点或终点等于 ORD 的拖链:

data = data[(data['Origin_Airport_Code'] != 'ORD']) | (data['Destination_Airport_Code'] !='ORD'])]

关于 group by,我没有按照您的 group by 的结果进行操作,但在这里您可以看到 groupby 函数在 pandas 中的工作原理: https ://pandas.pydata.org/pandas-docs/stable/reference /api/pandas.DataFrame.groupby.html


推荐阅读