python - KeyError when reading from Excel data into dataframe -
i have excel file 2 sheets , trying read both of them dataframe in code below. however, error
keyerror: "['months_to_maturity' 'asset_id' 'orig_iss_dt' 'maturity_dt' 'pay_freq_cd'\n 'coupon' 'closing_price'] not in index"
in line
return df[['months_to_maturity', 'asset_id', 'orig_iss_dt', 'maturity_dt' , 'pay_freq_cd', 'coupon', 'closing_price']]
in secondexcelfilereader()
function. however, both sheets have headers
asset_id orig_iss_dt maturity_dt pay_freq_cd coupon closing_price months_to_maturity
i return df
follows order in want columns.
def excelfilereader(): xls = pd.excelfile('d:/usdatarecently.xls') df = xls.parse(xls.sheet_names[0]) return df[['months_to_maturity', 'asset_id', 'orig_iss_dt', 'maturity_dt' , 'pay_freq_cd', 'coupon', 'closing_price']] def secondexcelfilereader(): xls = pd.excelfile('d:/usdatarecently.xls') df = xls.parse(xls.sheet_names[1]) return df[['months_to_maturity', 'asset_id', 'orig_iss_dt', 'maturity_dt' , 'pay_freq_cd', 'coupon', 'closing_price']] def mergingdataframes(): df1 = excelfilereader() df2 = secondexcelfilereader() return pd.concat([df1, df2])
edit: excel file exported sybase oracle sql developer , hence first sheet came titles. copied , pasted second sheet same titles. also, having issue second sheet.
def excelfilereader(): xls = pd.excelfile('d:/usdatarecently.xls') sheet_num = xls.sheet_names.index(xls.sheet_names[0]) df = pd.read_excel('d:/usdatarecently.xls',sheetname=sheet_num) return df[['months_to_maturity', 'asset_id', 'orig_iss_dt', 'maturity_dt' ,'pay_freq_cd', 'coupon', 'closing_price']]
alternatively in case instead of sheetname = xls.sheet_names[0]
use sheetname=0
looks issue second sheetname "sheet1" , based on excelparser documentation "sheet1" means first sheet, in case it's second sheet. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.excelfile.parse.html
a better implementation be:
def mergingdataframes(): mergedf= pd.concat(pd.read_excel('d:/usdatarecently.xls', sheetname=[0,1])) mergedf.index = mergedf.index.droplevel(0)# need drop dict keys return mergedf
Comments
Post a Comment