如何使用pandas的DataFrame.loc为CSV新增的Discounted_Price列插入折扣值?
解决Ford和Chevrolet车型折扣价的赋值问题
嘿,我来帮你搞定这个DataFrame.loc的用法问题!你之前的思路是对的,但最后一行的语法确实出错了,咱们一步步来修正:
首先,你已经完成了读取数据、插入空的Discounted_Price列这些正确步骤,问题出在最后给符合条件的行赋值的环节。
方法一:直接用.loc条件赋值(最简洁)
不需要单独创建Ford_Chev变量,直接在原DataFrame上通过条件定位行并赋值,一行代码就能搞定:
CarPrices_discount.loc[(CarPrices_discount['make'] == 'Ford') | (CarPrices_discount['make'] == 'Chevrolet'), 'Discounted_Price'] = CarPrices_discount['sellingprice'] * 0.9
这里的逻辑是:.loc[行条件, 列名] 会精准定位到所有make是Ford或Chevrolet的行,然后把这些行的Discounted_Price列设置为对应sellingprice的9折。
方法二:利用已筛选的Ford_Chev变量更新
如果你想保留之前筛选出来的Ford_Chev数据,也可以通过它的索引来更新原DataFrame,这样能避免视图/副本的警告问题:
# 先保留你之前的筛选步骤 Ford_Chev = CarPrices_discount[(CarPrices_discount['make'] == 'Ford') | (CarPrices_discount['make'] == 'Chevrolet')] # 用Ford_Chev的索引定位原DataFrame的行,然后赋值 CarPrices_discount.loc[Ford_Chev.index, 'Discounted_Price'] = Ford_Chev['sellingprice'] * 0.9
这样做的好处是,通过索引直接定位原DataFrame的行,不会因为Ford_Chev是视图而导致赋值不生效的问题。
为什么你之前的代码出错?
你最后一行的写法CarPrices_discount.loc[CarPrices_discount.Ford_Chev['Discounted_Price']=...] 语法完全不对——Ford_Chev是一个独立的DataFrame,不能用CarPrices_discount.Ford_Chev来访问,而且赋值操作也不能放在.loc的索引参数里。咱们上面的两种方法都是符合pandas规范的正确写法哦。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

