如何为熊猫数据框行中的每个新分组分配数值?

时间:2019-02-24 22:17:29

标签: python pandas python-2.7

如果我有一个这样的Pandas数据框:

     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

1 个答案:

答案 0 :(得分:1)

找到一种简单的方法有点困难

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