使用CSV文件时,Pandas数据框KeyError

时间:2019-09-19 01:22:01

标签: python pandas for-loop keyerror

我有如下所示的代码:

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 :(得分:1)

可能有一种更简洁的方法,但是您可以“尝试”将值计数分别分配给变量,如果不存在,则将其另存为NaN

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

等...

这样,即使csv文件中没有任何条目,代码也将运行,并且当您创建df时,缺少的值将仅为NaN,并且正确存储了其中的值