[英]Python Pandas: Skip if there is no data then continue writing into excel
不循環時如何跳過錯誤? 我有以下代碼:
import pandas as pd
import numpy as np
file = 'structure_name_Q4_SV.xlsx'
active_file = 'active_cases.csv'
df = pd.read_excel(file)
df1 = pd.read_csv(active_file)
active_cases_sv = df1.query('program_name == "sample"').pivot_table(values='value',
index=['country','facility_name','program_name','age_category','gender'],
columns=['year','quarter'],
aggfunc=np.sum,
margins=True,
margins_name="Total",
fill_value = '-')
single_session = df.query('encounterType == "encounter.sample.closure"'
).query('question == "Reasons for Closure"'
).query('value_all == "Single Session"'
).pivot_table(values='patient_id',
index=['country','FacilityName_x','age_category','gender'],
columns=['encounter_year','encounter_quarter'],
aggfunc=pd.Series.nunique,
margins=True,
margins_name="Total",
fill_value = '-')
single_session_sv = df.query('encounterType == "encounter.sample.closure"'
).query('question == "Reasons for Closure"'
).query('value_all == "Single Session"'
).query('SV == "Yes"'
).pivot_table(values='patient_id',
index=['country','FacilityName_x','age_category','gender'],
columns=['encounter_year','encounter_quarter'],
aggfunc=pd.Series.nunique,
margins=True,
margins_name="Total",
fill_value = '-')
writer = pd.ExcelWriter('test_data.xlsx', engine = 'xlsxwriter')
active_cases_sv.to_excel(writer,sheet_name = 'Active cases')
single_session.to_excel(writer,sheet_name = 'Single session')
single_session_sv.to_excel(writer,sheet_name = 'Single session SV')
writer.save()
writer.close()
print ("done")
當使用我添加的查詢在 dataframe 中找到數據時,該代碼工作正常。 問題是有時數據集可能沒有“single session”,但有“active_cases_sv”和“single_session_sv”。
所以它給了我一個錯誤'沒有 object 連接'
所以我想做的是讓代碼檢查每個代碼集(不知道如何調用它:即active_cases_sv,single_session,single_session_sv),如果有值,則將其添加到excel中,如果沒有,則跳過並轉到下一組代碼。
提前感謝您的指導。
約翰
看看empty ,然后為您的代碼更改:
active_cases_sv.to_excel(writer,sheet_name = 'Active cases')
single_session.to_excel(writer,sheet_name = 'Single session')
single_session_sv.to_excel(writer,sheet_name = 'Single session SV')
至
if not active_cases_sv.empty:
active_cases_sv.to_excel(writer,sheet_name = 'Active cases')
if not single_session.empty:
single_session.to_excel(writer,sheet_name = 'Single session')
if not single_session_sv.empty:
single_session_sv.to_excel(writer,sheet_name = 'Single session SV')
您可能需要添加一些額外的邏輯以確保 Excel 文件不為空。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.