我有一个熊猫DataFrame,其定义如下:

# -*- coding: utf-8 -*-

import datetime as dt

import pandas as pd

data = [[1, 1], [1, 1], [2, 2], [2, 2], [2, 2], [3, 3], [4, 4], [4, 4],

[4, 4], [5, 5], [5, 5]]

df = pd.DataFrame(data, columns=['A', 'B'])

df.index = pd.date_range(dt.datetime(2012, 1, 1), periods=len(df), freq='H')

print(df)

和产量:

A B

2012-01-01 00:00:00 1 1

2012-01-01 01:00:00 1 1

2012-01-01 02:00:00 2 2

2012-01-01 03:00:00 2 2

2012-01-01 04:00:00 2 2

2012-01-01 05:00:00 3 3

2012-01-01 06:00:00 4 4

2012-01-01 07:00:00 4 4

2012-01-01 08:00:00 4 4

2012-01-01 09:00:00 5 5

2012-01-01 10:00:00 5 5

现在,我试图获取A和B列相等且至少(或恰好也足够)A和B中n个连续行(此处为小时)相等的行的索引,即我想提取索引值在A和B相等的情况下,它们必须是连续的(长度大于等于= n的切片).

因此,在这种情况下,对于n = 2,它应该是“ twos”和“ fours”的索引:

2012-01-01 02:00:00

2012-01-01 03:00:00

2012-01-01 04:00:00

2012-01-01 06:00:00

2012-01-01 07:00:00

2012-01-01 08:00:00

仅获取A和B相等的行的索引很简单.

但是,如何仅获取n个连续的相等元素?

我想肯定有一些我目前看不到的花哨的groupby方法.

解决方法:

根据您的描述,我不清楚为什么1& 1.结果中将排除5个,因为它们每个都包含2个或多个连续的行,且A和A的值匹配. B.

但是,下面的解决方案仍然应该会有所帮助,并且我确定您可以对其进行修改以适合您的需求.它首先过滤数据帧以匹配A列和B列中的值(df_matching).然后,它使用移位累加模式将连续的匹配值分组,然后对n进行过滤.

n = 2

df_matching = df[df.A == df.B]

gb = df_matching.groupby((df_matching.A != df_matching.A.shift()).cumsum())

df_target = gb.filter(lambda x: len(x) >= n)

>>> df_target

A B

2012-01-01 00:00:00 1 1

2012-01-01 01:00:00 1 1

2012-01-01 02:00:00 2 2

2012-01-01 03:00:00 2 2

2012-01-01 04:00:00 2 2

2012-01-01 06:00:00 4 4

2012-01-01 07:00:00 4 4

2012-01-01 08:00:00 4 4

2012-01-01 09:00:00 5 5

2012-01-01 10:00:00 5 5

上面的数据框是为了确保它符合您的期望.然后只需提取索引:

>>> df_target.index

DatetimeIndex(['2012-01-01 00:00:00', '2012-01-01 01:00:00',

'2012-01-01 02:00:00', '2012-01-01 03:00:00',

'2012-01-01 04:00:00', '2012-01-01 06:00:00',

'2012-01-01 07:00:00', '2012-01-01 08:00:00',

'2012-01-01 09:00:00', '2012-01-01 10:00:00'],

dtype='datetime64[ns]', freq=None)

请注意,如果n = 3,您将获得预期的结果.

标签:pandas,python

来源: https://codeday.me/bug/20191111/2018349.html

python dataframe索引筛选_python-Pandas DataFrame:查找两列相等/相同的特定长度序列的索引值...相关推荐

  1. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  2. python中cumsum函数_Python pandas.DataFrame.cumsum函数方法的使用

    DataFrame.cumsum(self, axis=None, skipna=True, *args, **kwargs) 返回DataFrame或Series轴上的累计和. 返回包含累计和的相同 ...

  3. python dataframe 取一行_python – Pandas dataframe获取每个组的第一行

    我有一个pandas DataFrame如下. df = pd.DataFrame({'id' : [1,1,1,2,2,3,3,3,3,4,4,5,6,6,6,7,7], 'value' : [&q ...

  4. python 列表多行_Python Pandas list列表数据列拆分成多行的方法实现

    1.实现的效果 示例代码: df=pd.DataFrame({'A':[1,2],'B':[[1,2],[1,2]]}) df Out[458]: A B 0 1 [1, 2] 1 2 [1, 2] ...

  5. python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)

    简单循环 最简单的方式就是循环拆分一下呗.先上最简单方法:import pandas as pd df = pd.DataFrame({'A':['1','2','3'],'B':['1','2,3' ...

  6. python sum函数用法_Python pandas.DataFrame.sum函数方法的使用

    DataFrame.sum(axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs)[source] ...

  7. python中where函数_Python pandas.DataFrame.where函数方法的使用

    DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=Fals ...

  8. python中items函数_Python pandas.DataFrame.items函数方法的使用

    DataFrame.items(self) [source] 迭代器遍历(列名,Series)对. 遍历DataFrame列,返回一个具有列名称和内容为Series的元组. Yields:label: ...

  9. python将ElasticSearch索引数据读入pandas dataframe实战

    python将ElasticSearch索引数据读入pandas dataframe实战 # 导入基础包和库 import pandas as pdpd.set_option('display.max ...

最新文章

  1. powershell真香
  2. Lua学习笔记6:C++和Lua的相互调用
  3. 完美解决tar文件window解压问题
  4. Hive _函数(系统内置函数、自定义函数、自定义UDF函数)
  5. Error: no such column
  6. Java中9种IO的读取方式
  7. mysql port range_MySQL 数据库常见调优方法及参数设置_MySQL
  8. 【bzoj1951】【古代猪文】Lucas定理+欧拉定理+孙子定理
  9. 写口算用计算机作文600字,口算比赛作文600字
  10. 基于centos7和windows 搭建局域网wiki.js知识管理库的两种解决方案
  11. wannacry作者捉到了吗_WannaCry爆发的根源原来是它?
  12. 关于Data Matrix 基于ECC200标准的编码原理和相关开源代码
  13. 对不同角色用户设置不同的系统首页
  14. 计算机颜色显示器,电脑显示器怎么选,看这一篇就够了
  15. PAT 1066. Root of AVL Tree (25) 回レ!雪月AVL
  16. Python案例1—人民币与美元的汇率兑换V_3.0
  17. 刚学习阿里云VOD,获取视频播放地址
  18. Fruit Ripeness论文、代码和数据集汇总
  19. 修改Datagrip 2021.2.4 系统文件插件等目录的位置
  20. 强化学习-把元学习(Meta Learning)一点一点讲给你听

热门文章

  1. Oracle 的 X$ 表之:x$kqfta 内核SQL固定表信息
  2. 如何让百度搜索到自己的博客?
  3. Servlet[SpringMVC]的Servlet.init()引发异常
  4. c语言从入门到脱发,知乎|脱发是一种怎样的体验?
  5. HQChart使用教程30-K线图如何对接第3方数据20-信息地雷公告数据
  6. 前端面试经典八股文(一)
  7. 深度剖析一站式分布式事务方案 Seata-Server
  8. hrbust 2188 星际旅行
  9. C/C++班主任管家系统
  10. 前程无忧财报:招聘巨头囚于天花板