Jest to rozszerzenie mojego question.Panda DataFame podzielona na sesje
Aby było to łatwiejsze Przyjmijmy, że mam pandasową ramkę danych w następujący sposób.
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']
dataframe:
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
Chcę grupa ta opiera się na pewnych warunkach. Logika oparta jest na wartościach col1 col2 i skumulowanej różnicy col3:
- Przejdź do col1 i znajdź inne wystąpienia tej samej wartości.
- W moim przypadku pierwsza wartość col1 to "1.1" i znowu ich wartość jest taka sama w wierszu 2.
- Następnie sprawdź wartość col2, jeśli są one podobne, a następnie uzyskaj skumulowaną różnicę kol. 3.
- Jeśli łączna różnica jest większa niż 0,5, oznacz to jako nową sesję.
- Jeśli wartości col1 są takie same, ale wartości col2 różnią następnie oznaczyć je jako nowej sesji
oczekiwany wynik:
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
@unutbu:! To powinno być .. :) –