[英]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.