下記のようにAとBのデータがあり、ひとつ前の要素と比較して、AもBも重複していたら、その要素のみを抽出したいと考えております。  
この場合、A列の「A4」が抽出の対象となります。

[![配列のデータ](https://i.stack.imgur.com/JMiCp.png)](https://i.stack.imgur.com/JMiCp.png)

下記のように `for` 文を使って記述してみましたが、重複のみを抽出することがうまくできませんでした。  
ご教示いただけますと幸いです。  
よろしくお願いいたします。

```

    df1 = pd.DataFrame({'A': ['A0', 'A1', 'A11', 'A3'],
                        'B': [0, 1, 0, 4]},
                       index=[0, 1, 2, 3])
    
    df2 = pd.DataFrame({'A': ['A4', 'A4', 'A7', 'A7'],
                        'B': [3, 3, 8, 7]},
                       index=[4, 5, 6, 7])
    
    df3 = pd.concat([df1, df2])
    
    for i in range(len(df3["A"])-1):
        for j in range(len(df3["B"])-1):
            if df3["A"][i] == df3["A"][i+1] and df3["B"][i] == df3["B"][i+1]:
                print(df3["B"][j])
    
```
CC BY-SA 4.0
2021-09-03T08:09:35.347
82203
2021-09-14T03:51:31.760
2021-09-08T02:46:50.290
3060
42209
question
python pandas
二つの DataFrame から条件に一致する重複データのみを抽出したい
B の方の添字は j を使うべきではないでしょうか？

```

    if df3["A"][i] == df3["A"][i+1] and df3["B"][j] == df3["B"][j+1]:
    
```
CC BY-SA 4.0
2021-09-03T08:16:40.283
82204
2021-09-03T08:16:40.283
7290
82203
answer
下記だとどうでしょうか？

```

    for i in range(1, len(df3["A"])):
        if df3["A"][i] == df3["A"][i-1] and df3["B"][i] == df3["B"][i-1]:
            print(df3["A"][i])
    
```
CC BY-SA 4.0
2021-09-03T08:17:02.487
82205
2021-09-03T08:17:02.487
47923
82203
answer
参考までに、for loop を使わない方法を紹介します。

```

    >>> df3[(df3 == df3.shift(1)).all(axis=1)]
        A  B
    5  A4  3
    
```

[pandas.DataFrame.shift](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.shift.html)  
[pandas.DataFrame.all](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.all.html)
CC BY-SA 4.0
2021-09-03T08:36:27.870
82207
2021-09-03T08:47:40.107
2021-09-03T08:47:40.107
47127
47127
82203
answer
`for`文なしのパターンです

```

    df3.groupby(['A','B']).filter(lambda x: len(x) >= 2)
    
    #     A  B
    # 4  A4  3
    # 5  A4  3
    
```
CC BY-SA 4.0
2021-09-03T10:16:54.613
82212
2021-09-14T03:51:31.760
2021-09-14T03:51:31.760
43025
43025
82203
answer