Python 3.x 熊猫按行分组
我有一个这样的数据帧Python 3.x 熊猫按行分组,python-3.x,pandas,Python 3.x,Pandas,我有一个这样的数据帧 import pandas as pd raw_data = {'ID':['101','101','101','101','101','102','102','103'], 'Week':['W01','W02','W03','W07','W08','W01','W02','W01'], 'Orders':[15,15,10,15,15,5,10,10]} df2 = pd.DataFrame(raw_data, colu
import pandas as pd
raw_data = {'ID':['101','101','101','101','101','102','102','103'],
'Week':['W01','W02','W03','W07','W08','W01','W02','W01'],
'Orders':[15,15,10,15,15,5,10,10]}
df2 = pd.DataFrame(raw_data, columns = ['ID','Week','Orders'])
我想要在组中按行百分比
我怎样才能做到这一点
import pandas as pd
raw_data = {'ID':['101','101','101','101','101','102','102','103'],
'Week':['W01','W02','W03','W07','W08','W01','W02','W01'],
'Orders':[15,15,10,15,15,5,10,10]}
df2 = pd.DataFrame(raw_data, columns = ['ID','Week','Orders'])
使用
pct\u更改
df2.groupby('ID').Orders.pct_change()).add(1).fillna(0)
我发现它在我的熊猫版pct_中的变化不能用groupby对象来做,所以我们需要用它来做
df2['New']=sum(l,[])
df2.New=(df2.New+1).fillna(0)
df2
Out[606]:
ID Week Orders New
0 101 W01 15 0.000000
1 101 W02 15 1.000000
2 101 W03 10 0.666667
3 101 W07 15 1.500000
4 101 W08 15 1.000000
5 102 W01 5 0.000000
6 102 W02 10 2.000000
7 103 W01 10 0.000000
执行车窗操作,将值移动1个位置
df2['prev']=df2.groupby(by='ID').Orders.shift(1).fillna(0)
使用apply()单独计算更改百分比
我不确定窗口中是否有任何默认的pd.pct_change()
ID Week Orders prev pct
0 101 W01 15 0.0 0.000000
1 101 W02 15 15.0 0.000000
2 101 W03 10 15.0 -0.333333
3 101 W07 15 10.0 0.500000
4 101 W08 15 15.0 0.000000
5 102 W01 5 0.0 0.000000
6 102 W02 10 5.0 1.000000
7 103 W01 10 0.0 0.000000
@anky_91是有线的,我只是在我的工作环境中运行,它不工作。。但是在我的测试环境中工作。