Python 如何为数据帧行中的每个新分组分配数值?
如果我有一个像这样的熊猫数据框:Python 如何为数据帧行中的每个新分组分配数值?,python,pandas,python-2.7,Python,Pandas,Python 2.7,如果我有一个像这样的熊猫数据框: 0 1 2 3 4 5 1 NaN NaN 1 NaN 1 1 2 1 NaN NaN 1 NaN 1 3 NaN 1 1 NaN 1 1 4 1 1 1 1 1 1 5 NaN NaN NaN NaN NaN NaN 0 1 2 3 4 5 1 NaN NaN 1 NaN 2 2 2 1 NaN NaN
0 1 2 3 4 5
1 NaN NaN 1 NaN 1 1
2 1 NaN NaN 1 NaN 1
3 NaN 1 1 NaN 1 1
4 1 1 1 1 1 1
5 NaN NaN NaN NaN NaN NaN
0 1 2 3 4 5
1 NaN NaN 1 NaN 2 2
2 1 NaN NaN 2 NaN 3
3 NaN 1 NaN NaN 2 2
4 1 1 1 1 1 1
5 NaN NaN NaN NaN NaN NaN
如何计算每组的数量并根据每行中的组数指定值?这样我就得到了这样一个数据帧:
0 1 2 3 4 5
1 NaN NaN 1 NaN 1 1
2 1 NaN NaN 1 NaN 1
3 NaN 1 1 NaN 1 1
4 1 1 1 1 1 1
5 NaN NaN NaN NaN NaN NaN
0 1 2 3 4 5
1 NaN NaN 1 NaN 2 2
2 1 NaN NaN 2 NaN 3
3 NaN 1 NaN NaN 2 2
4 1 1 1 1 1 1
5 NaN NaN NaN NaN NaN NaN
要找到一个简单的方法有点难
s=df.isnull().cumsum(1) # cumsum get the null
s=s[df.notnull()].apply(lambda x : pd.factorize(x)[0],1)+1 # then we need assign the groukey
df=s.mask(s==0)# and mask 0 as NaN
df
0 1 2 3 4 5
1 NaN NaN 1.0 NaN 2.0 2.0
2 1.0 NaN NaN 2.0 NaN 3.0
3 NaN 1.0 1.0 NaN 2.0 2.0
4 1.0 1.0 1.0 1.0 1.0 1.0
5 NaN NaN NaN NaN NaN NaN