我有一個熊貓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相等的行的索引,並且至少(或者恰好也是足夠的)n個連續行(這裏小時)在A
和B
中相等,即,我想提取必須連續的索引值(切片長度> = n),其中A
和B
相等。
因此,在這種情況下,對於n = 2應該爲「兩歲」和「四肢」的索引:
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辦法,我沒有看到目前..
爲什麼在你給的例子中不會輸出「one」和「five」的索引? –
因爲只有兩行相等的「五」和n = 2所以只有三行相同的數字被返回 –
仍然不清楚爲什麼1和5不包括在返回的集合中。兩者都是n = 2連續行的例子,其中A和B相等。 – Alexander