【问题标题】:Pandas dataframe KeyError while working with CSV files处理 CSV 文件时的 Pandas 数据帧 KeyError
【发布时间】:2025-12-20 04:10:11
【问题描述】:

我有如下代码:

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

【问题讨论】:

  • 请您展示一些输入文件的简短示例吗?理想情况下,一个有一个没有一些键

标签: python pandas for-loop keyerror


【解决方案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,并且那里的值将被正确存储

【讨论】: