Python 从不同列中提取值时,在pandas中指定新列时出现问题
我在创建一个产品类别的平均折扣百分比的新列时遇到问题。我的数据框由带订单的行组成。每个订单都有其id、商品名称、产品类别、购买月份、零售价和折扣价,我还在百分比列中添加了折扣。我想添加一个新列,其中包括每个类别的平均折扣。简单地说,我想知道家具的产品平均折扣多少。然后,我想画出前3个类别的折扣随时间的推移,看看是否有季节性(我想的是酒吧图) 这就是示例数据Python 从不同列中提取值时,在pandas中指定新列时出现问题,python,pandas,dataframe,Python,Pandas,Dataframe,我在创建一个产品类别的平均折扣百分比的新列时遇到问题。我的数据框由带订单的行组成。每个订单都有其id、商品名称、产品类别、购买月份、零售价和折扣价,我还在百分比列中添加了折扣。我想添加一个新列,其中包括每个类别的平均折扣。简单地说,我想知道家具的产品平均折扣多少。然后,我想画出前3个类别的折扣随时间的推移,看看是否有季节性(我想的是酒吧图) 这就是示例数据 data = {'level_0': ['Furniture', 'Jewllery','Watches', 'Footwear', 'F
data = {'level_0': ['Furniture', 'Jewllery','Watches', 'Footwear', 'Furniture', 'Watches'],
'Discount_in_%': ['0.6', '.2', '0.3', '0.8', '0.7', '0.1']}
data = pd.DataFrame (data, columns = ['level_0','Discount_in_%'])
data
我的问题是生成包含每个类别的平均折扣的列。
我试着使用groupby()
,但我得到了一列sull的NaNs
df['discount_in_%'] = 1 - df['discounted_price']/df['retail_price']
df['mean_discount_cat'] = df.groupby('level_0')['discount_in_%'].sum()/len(df)
df['mean_discount_cat']
#level_0 is the main category column
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
..
19995 NaN
19996 NaN
19997 NaN
19998 NaN
19999 NaN
我尝试将其求和,然后按长度除以,就像我使用mean()
时一样,我也得到了NaN。
你能告诉我怎么修理这个吗?此外,我不知道如何绘制出前三大类别的平均折扣,但这可能是另一个问题
我非常感谢你的帮助。
谢谢大家! 这里有几个问题
非常感谢。我的问题是
df.groupby('level_0').mean()
不按降序对值进行排序,所以我不知道哪些类别折扣最多。此外,我需要为每个类别找到一个平均值,而不是每个项目。这是我不知道如何实现的事情。当我使用df.groupby('level_0').agg('mean')
时,我在整个专栏中仍然只得到了NaN。groupby().mean()将完全满足您的要求-每个类别的平均值。这相当于在SQL中按类别从tbl组中选择类别、平均值(col)您可以在生成结果后对其进行排序。您需要发布工作(尽管不正确)代码,以便我们了解哪些工作方式不符合您的要求。发布的代码不太有效。但是我能得到同一类别中所有值的平均值吗?请注意,一个类别在多行中重复,我需要每个类别的一个平均值。
data = {'level_0': ['Furniture', 'Jewllery','Watches', 'Footwear', 'Furniture', 'Watches'],
'discount_in_%': [0.6, .2, 0.3, 0.8, 0.7, 0.1]}
df = pd.DataFrame (data)
print(df.groupby('level_0').sum())