首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一列中选择值,然后使用相应的日期戳搜索其他列。

在一列中选择值,然后使用相应的日期戳搜索其他列。
EN

Stack Overflow用户
提问于 2020-01-22 13:05:45
回答 1查看 15关注 0票数 1

在我尝试学习Pandas的过程中,我有一项任务要解决,之前我曾在here上发布过一个问题,但现在我需要调整这个问题,以搜索基于date的值,而不是根据@jazrael友好地帮助我的行号进行计数。

基本上,我有如下数据格式:-

代码语言:javascript
复制
id    food     date        mood
id 1  nuts     2018-11-12  high
id 2  potatoes 2018-11-13  low
id 4  bread    2018-11-13  high
id 5  fish     2018-11-14  high
id 6  nuts     2018-11-14  high
id 7  fish     2018-11-15  allergies
id 8  beer     2018-11-16  low
id 9  bread    2018-11-17  high
id 10 fish     2018-11-18  high
id 11 pasta    2018-11-19  allergies

我希望在“心情”栏中搜索“过敏”,然后使用行中的“日期”值“过敏”值向后计算2天,并在“食物”栏中捕获所有相应的食物值(同时还会检测到行过敏的食物项目)。

因此,由此产生的数据可能如下(为了更好地理解这个问题,我将保留“日期”和“心情”栏):

代码语言:javascript
复制
id    food     date        mood
id 2  potatoes 2018-11-13  low
id 3  fish     2018-11-13  high
id 4  bread    2018-11-13  high
id 5  fish     2018-11-14  high
id 6  nuts     2018-11-14  high
id 7  fish     2018-11-15  allergies
id 9  bread    2018-11-17  high
id 10 fish     2018-11-18  high
id 11 pasta    2018-11-19  allergies

任何帮助都非常感谢!

云母

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-22 13:19:27

解决方案类似于以前的answer,仅将GroupBy.transformGroupBy.last一起用于allergies,减去2天数,并在boolean indexing中使用Series.ge进行筛选。

代码语言:javascript
复制
s = df['mood'].eq('allergies').iloc[::-1].cumsum()
df = df[df['date'].ge(df['date'].groupby(s).transform('last') - pd.Timedelta(2, unit='d'))]
print (df)
      id      food       date       mood
1   id 2  potatoes 2018-11-13        low
2   id 4     bread 2018-11-13       high
3   id 5      fish 2018-11-14       high
4   id 6      nuts 2018-11-14       high
5   id 7      fish 2018-11-15  allergies
7   id 9     bread 2018-11-17       high
8  id 10      fish 2018-11-18       high
9  id 11     pasta 2018-11-19  allergies

细节

代码语言:javascript
复制
print (df['date'].groupby(s).transform('last'))
0   2018-11-15
1   2018-11-15
2   2018-11-15
3   2018-11-15
4   2018-11-15
5   2018-11-15
6   2018-11-19
7   2018-11-19
8   2018-11-19
9   2018-11-19
Name: date, dtype: datetime64[ns]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59860451

复制
相关文章

相似问题

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