您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – pandas:根据列值在df中查找事件的第一个事件并标记为新的列值

5b51 2022/1/14 8:22:02 python 字数 3042 阅读 513 来源 www.jb51.cc/python

我有一个如下所示的数据框:customer_id event_date data 1 2012-10-18 0 1 2012-10-12 0 1 2015-10-12 0 2 2012-09-02 0 2

概述

我有一个如下所示的数据框:

customer_id event_date data 
1           2012-10-18    0      
1           2012-10-12    0      
1           2015-10-12    0      
2           2012-09-02    0      
2           2013-09-12    1      
3           2010-10-21    0      
3           2013-11-08    0      
3           2013-12-07    1     
3           2015-09-12    1    

我希望添加其他列,例如’flag_1’和&下面的’flag_2′,允许我自己(以及其他我传递修改后的数据时)轻松过滤.

Flag_1表示该客户在数据集中的首次出现.我通过排序成功实现了这个:
dta.sort_values([ ‘CUSTOMER_ID’,‘EVENT_DATE’])
然后使用:dta.duplicated([‘customer_id’]).astype(int)

当列’数据’= 1时,Flag_2将指示每个客户的第一次发生.

实现的附加列的示例如下所示:

customer_id event_date data flag_1 flag_2
1           2012-10-18    0      1      0
1           2012-10-12    0      0      0
1           2015-10-12    0      0      0
2           2012-09-02    0      1      0
2           2013-09-12    1      0      1
3           2010-10-21    0      1      0
3           2013-11-08    0      0      0
3           2013-12-07    1      0      1
3           2015-09-12    1      0      0

我是pandas的新手并不确定如何实现’flag_2’列而不迭代整个数据帧 – 我认为有一种更快的方法来实现使用内置函数但没有找到任何帖子?

谢谢

# Initialize empty flags
df['flag1'] = 0
df['flag2'] = 0

# Set flag1
groups = df.groupby('customer_id').groups
df.loc[[values[0] for values in groups.values()],'flag1'] = 1

# Set flag2
groups2 = df.loc[df.data == 1,:].groupby('customer_id').groups
df.loc[[values[0] for values in groups2.values()],'flag2'] = 1

>>> df
   customer_id  event_date  data  flag1  flag2
0            1  2012-10-18     0      1      0
1            1  2012-10-12     0      0      0
2            1  2015-10-12     0      0      0
3            2  2012-09-02     0      1      0
4            2  2013-09-12     1      0      1
5            3  2010-10-21     0      1      0
6            3  2013-11-08     0      0      0
7            3  2013-12-07     1      0      1
8            3  2015-09-12     1      0      0

总结

以上是编程之家为你收集整理的python – pandas:根据列值在df中查找事件的第一个事件并标记为新的列值全部内容,希望文章能够帮你解决python – pandas:根据列值在df中查找事件的第一个事件并标记为新的列值所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶