热线电话:13121318867

登录
2019-02-25 阅读量: 697
如何为pandas数据框行中的每个新分组分配数值?

如果我有像这样的Pandas Data框架:

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

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子