首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得Pandas DataFrame最后一行中具有特定值的所有索引?

如何获得Pandas DataFrame最后一行中具有特定值的所有索引?
EN

Stack Overflow用户
提问于 2018-05-18 20:06:31
回答 1查看 25关注 0票数 1

对于像DataFrame这样的样本,

代码语言:javascript
复制
>>> import pandas as pd
>>> index = pd.date_range(start='1/1/2018', periods=6, freq='15T')
>>> data = ['ON_PEAK', 'OFF_PEAK', 'ON_PEAK', 'ON_PEAK', 'OFF_PEAK', 'OFF_PEAK']
>>> df = pd.DataFrame(data, index=index, columns=['tou'])
>>> df
                          tou
2018-01-01 00:00:00   ON PEAK
2018-01-01 00:15:00  OFF PEAK
2018-01-01 00:30:00   ON PEAK
2018-01-01 00:45:00   ON PEAK
2018-01-01 01:00:00  OFF PEAK
2018-01-01 01:15:00  OFF PEAK

如何获得tou值不是ON_PEAK但其前面的行为ON_PEAK的所有索引,即输出如下:

代码语言:javascript
复制
['2018-01-01 00:15:00', '2018-01-01 01:00:00']

或者,如果使用ON_PEAK和它们旁边的第一行更容易获得所有行,即

代码语言:javascript
复制
['2018-01-01 00:00:00', '2018-01-01 00:15:00', '2018-01-01 00:30:00', '2018-01-01 00:45:00', '2018-01-01 01:00:00']
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-18 20:17:32

您需要找到tou不是ON_PEAK的行,使用pandas.shift()找到的前一个touON_PEAK。注意,shift中的正值给出了以前的第n个值,负值给出了数据中的第n个值。

代码语言:javascript
复制
df.loc[(df['tou']!='ON_PEAK') & (df['tou'].shift(1)=='ON_PEAK')]

输出:

代码语言:javascript
复制
                       tou
2018-01-01 00:15:00 OFF_PEAK
2018-01-01 01:00:00 OFF_PEAK
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50418561

复制
相关文章

相似问题

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