我正在尝试找到一种方法,如何获取电子商务数据帧,过滤出一些值,针对每个CustomerID
计算汇总指标,然后将其分配回预先过滤的每个CustomerID
数据集。
例如-虚拟数据集如下所示:
CustomerID Month Value
a 1 10
a 2 20
a 3 20
b 1 30
b 2 40
c 1 80
c 2 90
我想过滤Month
列中等于“ 1”的数据集,然后对每个Value
计算CustomerID
的四分位数,然后将其添加回原始数据集中每个CustomerID
。
我知道我可以做到这一点,可以通过运行groupby,然后使用quantile
函数,然后将值合并回原始数据集,然后运行if-else命令来分别计算四分位数,但是有没有这种请求的方式?
谢谢!
答案 0 :(得分:2)
这是您需要的吗?
df['quantile.25']=df.loc[df.Month==1,'Value'].quantile(0.25)
df
Out[230]:
CustomerID Month Value quantile.25
0 a 1 10 20.0
1 a 2 20 20.0
2 a 3 20 20.0
3 b 1 30 20.0
4 b 2 40 20.0
5 c 1 80 20.0
6 c 2 90 20.0
答案 1 :(得分:1)
使用:
s = df.query('Month == 1').groupby('Customer ID')['Month'].quantile()
df['new'] = df['Customer ID'].map(s)
print (df)
Customer ID Month Value new
0 a 1 10 1.0
1 a 2 20 1.0
2 a 3 20 1.0
3 b 1 30 1.0
4 b 2 40 1.0
5 c 1 80 1.0
6 c 2 90 1.0
说明:
query
进行过滤DataFrameGroupBy.quantile
map
创建新列