我有一个包含一些人口统计数据和一些调查文本回复的数据框。我想将响应数据的每一列以及一些人口统计信息字段导出到基于人口统计信息字段之一的不同Excel文件中。我有可以做到所有这些的代码。丢失的部分是在写入Excel时使用nan删除行。
我尝试为每个问题创建单独的数据框,然后将nans放到那里,这是可行的。然后我不确定如何将它们重新组合在一起以编写Excel。
# Sample dataframe
df = pd.DataFrame({'ID' : ['1','2','3','4'],
'School': ['School1', 'School1', 'School2', 'School2'],
'Sex': ['M', 'M', 'F', 'F'],
'Q1' : ['Black', np.nan, 'White', 'White'],
'Q2' : ['Good', 'Good', 'Bad', 'Bad'],
'Q3' : ['Up', 'Up', np.nan, 'Down']})
# Create output
output = df[['ID','School','Sex','Q1','Q2','Q3']].groupby('School')
# Loop to write to Excel files
for school, df_ in output:
writer = pd.ExcelWriter(f'school_{school}_tabs.xlsx', engine='xlsxwriter')
df_[['School','Sex','Q1']].to_excel(writer, sheet_name='Q1')
df_[['School','Sex','Q2']].to_excel(writer, sheet_name='Q2')
df_[['School','Sex','Q3']].to_excel(writer, sheet_name='Q3')
writer.save()
该示例代码应创建两个Excel文件,一个用于School1,一个用于School2。每个文件将具有三个选项卡,每个问题(Q1,Q2,Q3)一个。如您所见,Q1和Q3具有nan值,这些值作为空白写入Excel。我不希望将这些行写入Excel。显然,这些人回答了我想写到Excel的其他问题。
答案 0 :(得分:0)
在您的代码中,您需要使用.dropna()
。
例如:df_.dropna()
您需要在how
参数中确定dropna
。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html
使用该参数进行实验,您应该得到想要的东西。