按字符串与数值列分组DataFrame时sum函数返回异常结果求助
问题原因与解决方法
问题根源:你的
Price列是字符串类型(object),不是数值类型(int/float),所以groupby后的sum()方法没有执行数值相加,而是把所有字符串内容拼接在了一起,就出现了48.5200.048.5200.0这种异常结果。解决步骤:
- 先确认列类型:执行
print(df_data['Price'].dtype),结果应该是object,验证这个判断。 - 转换
Price列为数值型,同时把无效值转成NaN:df_data['Price'] = pd.to_numeric(df_data['Price'], errors='coerce') - 过滤掉Price为空(NaN)或等于0的行:
df_data = df_data[df_data['Price'].notna() & (df_data['Price'] != 0)] - 重新执行分组求和:
total_spent_by_org = df_data.groupby('Organisation')['Price'].sum()
- 先确认列类型:执行
内容的提问来源于stack exchange,提问作者Mak575
相关产品推荐
相关产品推荐

