【问题标题】:Struggling to insert values into a new column努力将值插入新列
【发布时间】:2021-12-15 02:19:38
【问题描述】:

我遇到了一个问题。我在我的 csv 文件中创建了一个新列,我正在尝试在列中添加值,但不知道要使用哪些函数。该列名为“Discounted_Price”,我不得不提到福特和雪佛兰的价格有百分之十的折扣。 这是到目前为止的代码:

CarPrices_discount=pd.read_csv('C:\\Users\\Jon\\Desktop\\data science\\car_prices.csv')
CarPrices_discount
CarPrices_discount.insert(15,'Discounted_Price',np.nan)
CarPrices_discount.head()
Ford_Chev=CarPrices_discount[(CarPrices_discount.make=='Ford')|(CarPrices_discount.make=='Chevrolet')]  
#Ford_Chev['Discounted_Price']=Ford_Chev['sellingprice']*0.9
CarPrices_discount.loc[CarPrices_discount.Ford_Chev['Discounted_Price']=Ford_Chev['sellingprice']*0.9

我知道最后一行是错误的,但我不知道如何用 dataframe.loc 插入它。

【问题讨论】:

  • 欢迎。你能解释一下你想要在新列中的值是什么吗?
  • @EitanRosati 是的,我正在尝试将折扣价添加到新列中。
  • 所以只有福特和雪佛兰有折扣,其他的不对?
  • 其他的也有20%的折扣,不过我先解决福特和雪佛兰一个。
  • 我会把代码发给你。汽车公司的列名是什么(福特,...)?

标签: python arrays pandas dataframe numpy


【解决方案1】:

数据:

>>> import pandas as pd
>>> import numpy as np
>>> CarPrices_discount = pd.DataFrame({"make" : ['Chevrolet', 'a', 'b', 'Ford', 'Chevrolet', 'Ford'],
                                       "sellingprice" : [900, 10,20,20,40,30]})
>>> CarPrices_discount

    make        sellingprice
0   Chevrolet   900
1   a           10
2   b           20
3   Ford        20
4   Chevrolet   40
5   Ford        30


>>> CarPrices_discount['Discounted_Price'] = CarPrices_discount.apply(lambda x:x.sellingprice*0.9 if x.make in ['Ford', 'Chevrolet'] else np.nan, axis=1)
>>> CarPrices_discount
    make        sellingprice    Discounted_Price
0   Chevrolet   900             810.0
1   a           10              NaN
2   b           20              NaN
3   Ford        20              18.0
4   Chevrolet   40              36.0
5   Ford        30              27.0

【讨论】:

  • 我使用了一个 csv 文件,所以我不确定这是否可行...
  • 他的回答应该有效CarPrices_discount['Discounted_Price'] = CarPrices_discount.apply(lambda x:x.sellingprice*0.9 if x.make in ['Ford', 'Chevrolet'] else np.nan, axis=1)。试试吧
【解决方案2】:

好的,我找到了某种答案,但它存在很大缺陷:

Ford_Chev=CarPrices_discount[(CarPrices_discount.make=='Ford'(CarPrices_discount.make=='Chevrolet')] print(Ford_Chev) 
  Ford_Chev['Discounted_Price']=Ford_Chev["sellingprice"]*0.9 
  print(Ford_Chev)

【讨论】:

  • 首先,有问题的代码似乎还有另一个问题。我会将此作为答案。
  • @b10n1k 我不太明白...出了什么问题?
  • 您错过了一些详细说明。您发现的最初问题是什么以及后续答案实际上是如何解决的。 stackoverflow.com/help/how-to-answer "简洁是可以接受的,但更全面的解释更好。"
  • @b10n1k 哦……我明白了。谢谢你告诉我
猜你喜欢
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-08
  • 2021-11-23
  • 1970-01-01
相关资源
最近更新 更多