You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解释Pandas中计算车辆价格颜色占比的核心代码

核心代码逐部分拆解解释

咱们把这段核心代码拆成小块,一步步看它在做什么:

  1. df.loc[i, 'Color']
    取DataFrame里第i行的Color列值,也就是当前循环到的这辆车的颜色。比如你的原始数据里第0行是红色,那这里就返回'Red'。

  2. df['Color'] == df.loc[i, 'Color']
    生成一个布尔数组(由True/False组成),数组每个位置对应原DataFrame的一行:如果该行颜色和当前车颜色一致,就标True,否则标False。比如当前车是红色,所有红色行都会是True,其他颜色行是False。

  3. df[df['Color'] == df.loc[i, 'Color']]
    用上面的布尔数组过滤原DataFrame,得到一个仅包含当前车同颜色所有车辆的子数据集。比如当前车是红色,这里就把所有红色车的数据单独提取出来。

  4. df[df['Color'] == df.loc[i, 'Color']]['Price']
    从这个同颜色子数据集中,提取出Price列,得到同颜色所有车的价格列表(Pandas Series格式)。比如红色车价格是[10000,20000],这里就返回这个Series。

  5. df[df['Color'] == df.loc[i, 'Color']]['Price'].sum()
    对上面的价格列表求和,算出当前颜色所有车辆的总价格。比如红色车总价格就是30000。

  6. df['Price'][i]
    取当前第i辆车的价格,也就是你要计算占比的那辆车的单独价格。

  7. 最终除法运算
    用当前车的价格除以同颜色总价格,得到的就是这辆车价格在对应颜色总价格中的占比,结果赋值给cost。


补充:更高效的Pandas写法

你现在用循环的方式虽然能得到正确结果,但Pandas天生适合向量化操作,不用写循环也能实现相同效果,而且数据量大的时候速度快很多:

df['Cost_Ratio'] = df['Price'] / df.groupby('Color')['Price'].transform('sum')

这里groupby('Color')按颜色分组,transform('sum')会把每组的总价格自动匹配到原DataFrame的每一行,然后直接用每行价格除以对应组的总价格,一步生成所有占比。

内容的提问来源于stack exchange,提问作者goldraker34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:42:51