繁体   English   中英

Python Pandas:如果没有数据则跳过然后继续写入excel

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM