首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用其他栏的值在熊猫中创建新列

利用其他栏的值在熊猫中创建新列
EN

Stack Overflow用户
提问于 2017-03-30 17:40:06
回答 1查看 90关注 0票数 1

我正在处理以下数据:

代码语言:javascript
复制
          p                      q 
   0      11                     2                            
   1      11                     2                  
   2      11                     2                  
   3      11                     3                  
   4      11                     3                  
   5      12                     2                  
   6      12                     2                  
   7      13                     2               
   8      13                     2            

我想要创建一个新的列,比如,它从0开始,然后继续。这个新的值是以"p“列为基础的,每当p发生变化时,"s”也会发生变化。

对于前4行,"p“= 11,so "s”列的值应为前4行,依此类推.

下面是预期的df:

代码语言:javascript
复制
     s             p         q 

 0   0             11        2         
 1   0             11        2         
 2   0             11        2          
 3   0             11        2          
 4   1             11        4           
 5   1             11        4           
 6   1             11        4           
 7   1             11        4           
 8   2             12        2           
 9   2             12        2           
 10  2             12        2           
 11  3             12        3           
 12  3             12        3        
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 17:44:36

您需要diffcumsum (如果您希望id从0开始,则减去一个):

代码语言:javascript
复制
df["finalID"] = (df.ProjID.diff() != 0).cumsum()
df

Update,如果要同时考虑voyg_id和ProjID,可以对两列差异使用OR条件,这样无论哪一列更改,最终id都会增加。

代码语言:javascript
复制
df['final_id'] = ((df.voyg_id.diff() != 0) | (df.proj_id.diff() != 0)).cumsum()
df

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43124833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档