簡體   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