есть ли какой-нибудь способ пропускать строки в pandas, пока csv не скажет «Таблица рейсов»?

#python #pandas #csv

#python #pandas #csv

Вопрос:

 N11682,aircraft,C172,,Cessna,C172SP,airplane,airplane_single_engine_land,fixed_tricycle,Piston,false,false,false,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Flights Table,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Date,AircraftID,From,To,Route,TimeOut,TimeOff,TimeOn,TimeIn,OnDuty,OffDuty,TotalTime,PIC,SIC,Night,Solo,CrossCountry,Distance,DayTakeoffs,DayLandingsFullStop,NightTakeoffs,NightLandingsFullStop,AllLandings,ActualInstrument,SimulatedInstrument,HobbsStart,HobbsEnd,TachStart,TachEnd,Holds,Approach1,Approach2,Approach3,Approach4,Approach5,Approach6,DualGiven,DualReceived,SimulatedFlight,GroundTraining,InstructorName,InstructorComments,Person1,Person2,Person3,Person4,Person5,Person6,FlightReview,Checkride,IPC,PilotComments
2020-11-01,N172TG,KSFM,KSFM,,,,,,,,0.8,0.8,0.0,0.0,0.0,0.0,0.00,0,0,0,0,0,0.0,0.0,0.00,0.00,0.00,0.00,0,,,,,,,0.8,0.0,0.0,0.0,,,,,,,,,false,false,false
2020-11-01,N916BA,KSFM,KSFM,,,,,,,,0.5,0.5,0.0,0.0,0.0,0.0,0.00,0,0,0,0,0,0.0,0.0,0.00,0.00,0.00,0.00,0,,,,,,,0.5,0.0,0.0,0.0,,,,,,,,,false,false,false31,N172TG,KSFM,KSFM,KASH,,,,,,,1.7,1.7,0.0,0.0,0.0,1.7,0.00,0,0,0,0,0,0.0,0.0,0.00,0.00,0.00,0.00,0,,,,,,,1.7,0.0,0.0,0.0,,,,,,,,,false,false,false
  

Вот мой CSV, хотя я хочу, чтобы он пропускал несколько строк до строки «Таблица полетов», возможно ли это? Я использовал skiprows, но мне нужно немного больше гибкости

Комментарии:

1. каков ожидаемый результат?

Ответ №1:

Я бы:

  1. Откройте файл CSV
  2. перебирайте его как итератор
  3. если строка начинается с вашей волшебной строки, передайте оставшиеся строки в pandas.read_csv
 with open(mycsv, 'r') as fobj:
    for line in fobj:
        if line.startswith('Flights Table'):
            df = pandas.read_csv(fobj)
  

Ответ №2:

Используйте эту ссылку для подсчета строк вручную и используйте skiprows.

Если строки продолжают меняться — используйте readline, пока не найдете свою строку и не посчитаете строки программно и не передадите в skiprows

skiprows : список, подобный int или вызываемый, необязательные номера строк для пропуска (с индексом 0) или количество строк для пропуска (int) в начале файла.