6

これは私の質問の延長です。

簡単にするために、次のような pandas データフレームがあるとします。

df = pd.DataFrame([[1.1, 1.1, 2.5, 2.6, 2.5, 3.4,2.6,2.6,3.4], list('AAABBBBAB'), [1.1, 1.7, 2.5, 2.6, 3.3, 3.8,4.0,4.2,4.3]]).T
df.columns = ['col1', 'col2','col3']

データフレーム:

  col1 col2 col3
0  1.1    A  1.1
1  1.1    A  1.7
2  2.5    A  2.5
3  2.6    B  2.6
4  2.5    B  3.3
5  3.4    B  3.8
6  2.6    B    4
7  2.6    A  4.2
8  3.4    B  4.3

これをいくつかの条件に基づいてグループ化したいと思います。ロジックは、col1 col2 の値と col3 の累積差に基づいています。

  1. col1 に移動し、同じ値の他のオカレンスを見つけます。
  2. 私の場合、col1 の最初の値は '1.1' で、row2 の値も同じです。
  3. 次に、col2 の値を確認し、類似している場合は、col3 の累積差を取得します。
  4. 累積差が 0.5 より大きい場合は、これを新しいセッションとしてマークします。
  5. col1 の値が同じで、col2 の値が異なる場合は、それらを新しいセッションとしてマークします

期待される出力:

   col1 col2 col3 session
0  1.1    A  1.1  0
1  1.1    A  1.7  1
2  2.5    A  2.5  2
3  2.6    B  2.6  4
4  2.5    B  3.3  3
5  3.4    B  3.8  7
6  2.6    B    4  5
7  2.6    A  4.2  6
8  3.4    B  4.3  7
4

1 に答える 1