首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pandas dataframe发现最后一个值低于组内列中的特定值

pandas dataframe发现最后一个值低于组内列中的特定值
EN

Stack Overflow用户
提问于 2020-02-26 15:57:56
回答 1查看 89关注 0票数 3

有一个pandas数据帧,需要在group内的列中找到低于某个值的最后一个值。

代码语言:javascript
复制
     dataframe is as following:
     region    year   month      signal
     A         2010   2          20
     A         2010   3          32
     A         2010   4          24
     A         2010   6          50
     .......
     A         2011   1          20
     .......
     B         2010   2          100
     B         2010   3           20
     .......

现在,我需要添加一列标志来标记每个"region“、" year”组合在上半年低于25的最后一个值。因此,以2010年上半年的区域A为例,4月信号值将被标记为1。对此有什么建议吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-26 16:02:31

首先按boolean indexing筛选行,按Series.lt筛选较少的条件,然后使用DataFrame.duplicated作为组合regionyear的最后一个值。赋值给带有Series.reindex的列,将misisng值替换为False,最后通过将掩码转换为整数来映射True->1False->0

代码语言:javascript
复制
m = ~df.loc[df['month'].lt(7) & df['signal'].lt(25)].duplicated(['region','year'], keep='last')

df['new'] = m.reindex(df.index, fill_value=False).astype(int)
print (df)
  region  year  month  signal  new
0      A  2010      2      20    0
1      A  2010      3      32    0
2      A  2010      4      24    1
3      A  2010      6      50    0
4      A  2011      1      20    1
5      B  2010      2     100    0
6      B  2010      3      20    1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60409213

复制
相关文章

相似问题

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