70057


Pandasでデータ処理をしています。以下のデータセット（df）で、
A列（IDです）の値が2の行ではE列の値が1のみ（0が存在しない）4の行ではE列の値が0のみ（1が存在しない）です。このようなデータから、E列の値が0と1の両方を含むデータだけを取り出したいです。（A列が2と4の行を削除して、A列が1、3、5の行だけを残したいです。）  
何か良い操作があればご教示くださいませんか？

[code]

        A   B   C   D   E   F
    1   1   0   0   0   1   1163.7
    2   1   0.8 0.8 2.2 0   0
    3   1   0.2 0.2 4.4 0   0
    4   1   0.8 0.4 0.4 0   0
    5   1   0.5 0.7 3.8 0   0
    6   2   1   1   8.9 1   116
    7   2   1.5 1.5 1.7 1   116
    8   2   2   2   8.7 1   116
    9   3   3   3   5.  0   0
    10  3   4.5 4.5 2.2 0   0
    11  3   6.0 6.5 0.8 0   0
    12  3   8   8   0.3 0   0
    13  3   5.3 0   0   1   116
    14  3   0   0   0   1   116
    15  4   0.8 0.8 1.1 0   0
    16  4   0.2 0.5 3.4 0   0
    17  4   0.4 0.8 3.2 0   0
    18  4   0.7 0.5 3.0 0   0
    19  5   1   1   1.5 0   0
    20  5   1.5 1.5 1.7 0   0
    21  5   2   2   7.9 1   116
    ・
    ・
    ・
    
[/code]

以下が目標とするデータセットです。

[code]

        A   B   C   D   E   F
    1   1   0   0   0   1   1163.7
    2   1   0.8 0.8 2.2 0   0
    3   1   0.2 0.2 4.4 0   0
    4   1   0.8 0.4 0.4 0   0
    5   1   0.5 0.7 3.8 0   0
    6   3   3   3   2.2 0   0
    7   3   4.5 4.5 2.2 0   0
    8   3   6.0 6.5 0.8 0   0
    9   3   8   8   0.3 0   0
    10  3   5.3 0   0   1   116
    11  3   0   0   0   1   116
    12  5   1   1   1.5 0   0
    13  5   1.5 1.5 1.7 0   0
    14  5   2   2   7.9 1   116
    ・
    ・
    ・
    
[/code]


CC BY-SA 4.0
2020-09-01T14:03:45.003
70055
2020-09-01T16:27:01.867
2020-09-01T16:27:01.867
41680
41680
question
python pandas
pandasで少し複雑なデータの選択を行いたい


元のデータが`df`に入っているとして、以下のように出来るでしょう。

[code]

    droprows = []
    grouped = df.groupby('A')
    for i, dfw in grouped:
        if dfw['E'].value_counts().shape[0] < 2:
            droprows.extend(dfw.index)
    
    df.drop(index=droprows, inplace=True)
    df.reset_index(drop=True, inplace=True)
    df.index += 1
    
[/code]

ちなみに目標とするデータセットに元データの`9 3 3 3 5. 0 0`の行のデータが抜けていますが、それはコピーミスですよね？


CC BY-SA 4.0
2020-09-01T15:42:54.367
70057
2020-09-01T15:42:54.367
26370
70055
answer