pandas基于其他列值计算房地产行业捐赠金额总和问题求解
问题原因
你代码的求和逻辑存在错误:循环中累加的是行索引变量row的整数值,而非对应行的捐款金额Amount字段,导致计算出来的总金额和实际值偏差极大。你代码里只打印了Amount的值,求和时误用了行索引,所以才会出现粘贴打印值到表格求和和代码结果不一致的问题。
修正后的循环代码
realestate_counter = 0 realestate_donations = 0 for row in range(df.shape[0]): # 遍历dataframe每一行 if 'realestate' in df.iloc[row]['Occupation']: # 累加对应行的捐款金额,而非行索引 realestate_donations = realestate_donations + int(df.iloc[row]['Amount']) print(df.iloc[row]['Amount']) realestate_counter = realestate_counter + 1 print('$' + str(realestate_donations) +' 来自房地产行业的捐款。') print('共有 ' + str(realestate_counter) +' 位房地产行业捐赠者。')
更高效的pandas原生写法(无需手动循环)
pandas支持向量化操作,直接通过筛选条件统计即可,代码更简洁执行效率更高:
# 筛选职业包含realestate的行,na=False可避免空值报错 realestate_df = df[df['Occupation'].str.contains('realestate', na=False)] realestate_donations = realestate_df['Amount'].sum() realestate_counter = realestate_df.shape[0] print(f'${realestate_donations} 来自房地产行业的捐款。') print(f'共有 {realestate_counter} 位房地产行业捐赠者。')
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

