Pandas 使用 CSV 文件时数据帧出现 KeyError
Pandas dataframe KeyError while working with CSV files
我有如下所示的代码:
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
可能有 cleaner/shorter 方法可以做到这一点,但您可以 'try' 将值计数单独分配给一个变量,如果它不存在,则将其保存为 NaN
import numpy as np
try:
ADO = d['ADO']
except:
ADO = np.nan
try:
Bunker = d['Bunker']
except:
Bunker = np.nan
等...
这样,即使 csv 文件中没有条目,代码也会 运行,并且当您创建 df 时,缺失值将只是 NaN,并且那里的值将是正确的存储
我有如下所示的代码:
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
可能有 cleaner/shorter 方法可以做到这一点,但您可以 'try' 将值计数单独分配给一个变量,如果它不存在,则将其保存为 NaN
import numpy as np
try:
ADO = d['ADO']
except:
ADO = np.nan
try:
Bunker = d['Bunker']
except:
Bunker = np.nan
等...
这样,即使 csv 文件中没有条目,代码也会 运行,并且当您创建 df 时,缺失值将只是 NaN,并且那里的值将是正确的存储