如何基于两个不同列的值从pandas df中删除行

时间:2019-04-16 01:08:16

标签: python pandas csv if-statement

我正在读取一个包含航班记录的大型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语句或循环吗? 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

过滤符合这两列的行,删除起点或终点等于ORD的丝束:

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

关于分组依据,我没有遵循分组依据的结果,但是在这里您可以看到groupby函数在熊猫中的工作方式: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html