我想在一个大表格中处理其中两列,先对一列筛选,再对另一列筛选。其实就是数据清洗过程。
我的原表是DataFrame类,这是我的代码。
import os import numpy as np import pandas as pd from datetime import datetime from pandas import Timestamp path = "D:/pandas/空管数据2018.12.csv" data = pd.read_csv(path,index_col=['Unnamed: 0'],parse_dates=['实际起飞时间','实际降落时间'],low_memory=False) screencondition1 = data['起飞机场'] == 'ZBAA' #筛选起飞机场为首都机场 screencondition2 = data['降落机场'] == 'ZBAA' #筛选降落机场为首都机场 data1 = data[screencondition1] data2 = data1.sort_values('实际起飞时间').reset_index().fillna(0) data3 = data[screencondition2] data4 = data3.sort_values('实际降落时间').reset_index().fillna(0) print(data2)
输出结果如下:
index 航班号 机型 注册号 ... 扇区19离开时间 扇区20名称 扇区20进入时间 扇区20离开时间
0 50202 CSS6871 B752 B2845 ... 0 0 0 0
1 94007 CCA975 A333 B5913 ... 0 0 0 0
2 17221 CSS6945 B752 B1463 ... 0 0 0 0
3 135569 CCA9693 B738 B7896 ... 0 0 0 0
4 50963 CSS6909 B733 B2966 ... 0 0 0 0
... ... ... ... ... ... ... ... ...
23188 150574 CCA4166 A320 B8890 ... 0 0 0 0
23189 151693 CES5176 A320 B8975 ... 0 0 0 0
23190 152292 CSN6214 A320 B8991 ... 0 0 0 0
23191 152751 CFI013 C680 B9329 ... 0 0 0 0
23192 155735 CCA1625 A321 B9919 ... 0 0 0 0
[23193 rows x 284 columns]
如果我用pd.values把DataFrame转成ndarray类,则是下面的结果:
[[50202 'CSS6871' 'B752' ... 0 0 0]
[94007 'CCA975' 'A333' ... 0 0 0]
[17221 'CSS6945' 'B752' ... 0 0 0]
...
[152292 'CSN6214' 'A320' ... 0 0 0]
[152751 'CFI013' 'C680' ... 0 0 0]
[155735 'CCA1625' 'A321' ... 0 0 0]]