【发布时间】:2019-09-13 21:28:21
【问题描述】:
我有一个df,例如
ID | Status | Color
555 Cancelled Green
434 Processed Red
212 Cancelled Blue
121 Cancelled Green
242 Cancelled Blue
352 Processed Green
343 Processed Blue
我正在使用如下代码:
cc = df.groupby(by='Color').ID.count()
df.groupby(by=['Color', 'Status']).apply(lambda x: len(x)/cc.loc[x.Color.iloc[0]])
这给了我输出,例如
Color Status
Blue Cancelled 0.666667
Processed 0.333333
Green Cancelled 0.666667
Processed 0.333333
Red Processed 1.000000
dtype: float64
这给了我每种颜色状态的百分比。
还有一个名为 dollar_value 的字段,其中每行包含美元金额,如果我想在 1 的输出中添加两个字段。 Total_Dollars strong> 表示该颜色和状态,2. dollar_per_order 表示该颜色(这意味着如果 Total_Dollars 为 1000,并且该颜色和状态有 200 行,则为 1000 /200 或 5。我可以轻松地将这两个计算添加到我已经拥有的输出中吗?或者我需要创建一个函数吗?
期望的输出:
Color Status Total |Dollar_Per_Order
Blue Cancelled 0.666667 1000 20
Processed 0.333333 200 5
Green Cancelled 0.666667 2000 20
Processed 0.333333 1000 5
Red Processed 1.000000 300 10
dtype: float64
谢谢!
【问题讨论】:
-
美元价值从何而来??
-
total_dolar=groupby().sum(),dolar_per_order=groupby().mean()? -
df 中有另一列,每行只有美元值
标签: python python-3.x pandas data-science