これは私の質問の延長です。
簡単にするために、次のような 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 の累積差に基づいています。
- col1 に移動し、同じ値の他のオカレンスを見つけます。
- 私の場合、col1 の最初の値は '1.1' で、row2 の値も同じです。
- 次に、col2 の値を確認し、類似している場合は、col3 の累積差を取得します。
- 累積差が 0.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