Pandas DataFrame中Vendor列条件筛选及对应列求和问题
解决方法
- 先将float类型的
Vendor列转换为字符串类型,再筛选以'6'开头的行,最后对目标列求和:
# 处理空值(可选,根据实际数据情况) filtered_df = df[df['Vendor'].notna()] # 转换为字符串并筛选以6开头的行 filtered_df = filtered_df[filtered_df['Vendor'].astype(str).str.startswith('6')] # 对目标列求和 total_amount = filtered_df['Amount in loc.curr.2'].sum() print(total_amount)
- 简化版(自动忽略NaN,因为astype(str)后NaN会转为'nan',startswith('6')会返回False):
total_amount = df[df['Vendor'].astype(str).str.startswith('6')]['Amount in loc.curr.2'].sum()
之前尝试失败的原因
- 方案1直接对float列使用
str[0]会报错,Pandas的字符串方法仅适用于字符串类型列,必须先转换类型。 - 方案2用数值区间
600<=Vendor<700的逻辑有局限性,只能匹配600-699的整数,会漏掉6.0、60.0、6000.0这类以6开头但不在该区间的数值,字符串匹配的方法更准确。
内容的提问来源于stack exchange,提问作者Peter 1999
相关产品推荐
相关产品推荐

