Pandas dataframe KeyError при работе с файлами CSV - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть этот код, как показано:

for filename in glob.glob('/Users/jacob/Desktop/MERS/new/NOT COAL/gensets/statistics_per_lgu/per_lgu_files/*.csv'):


    # For fuel consumption
    count = df_csv['Fuel Type_Jundy'].count()
    aa = df_csv['Fuel Type_Jundy']
    d = aa.value_counts()

    ADO = d['ADO']
    Bunker = d['Bunker']
    LSFO = d['LSFO']
    IFO = d['IFO']
    LPG = d['LPG']


    fuel_type = pd.DataFrame({'count': count, 'ADO':ADO, 'Bunker':Bunker, 'LSFO':LSFO, 'IFO':IFO, 'LPG':LPG},
                             index=['fuel_type'])

Возникает KeyError, поскольку не все CSV-файлы содержат ADO, Bunker, LSFO и т. Д. Одновременно.

Что я могу сделать, чтобы я мог получить этот фрейм данных

  fuel_type = pd.DataFrame({'count': count, 'ADO':ADO, 'Bunker':Bunker, 'LSFO':LSFO, 'IFO':IFO, 'LPG':LPG},
                         index=['fuel_type'])

таким, чтобы все, что находится в * .csv (будь то LSFO, ADO, Bunker и т. Д.), Имело счет вдатафрейм.

Спасибо!: D

1 Ответ

0 голосов
/ 19 сентября 2019

может быть более чистый / короткий способ сделать это, но вы могли бы 'попытаться' присвоить значение переменной индивидуально, и, если оно не существует, сохранить его как NaN

import numpy as np
try:
    ADO = d['ADO']
except:
    ADO = np.nan
try:
    Bunker = d['Bunker']
except:
    Bunker = np.nan

etc ...

таким образом, код будет работать, даже если в файле csv нет записи, а когда вы делаете df, пропущенные значения будут просто NaN и значения, которые являютсятам будет правильно храниться

...