Предположим, я импортирую панд и numpy следующим образом:
import pandas as pd
import numpy as np
и создаю следующий фрейм данных:
df = pd.DataFrame({'Alpha'
['A','A','A','B','B','B','B','C','C','C','C','C'],'Beta' : np.NaN})
..., который дает мне это:
Alpha Beta
0 A NaN
1 A NaN
2 A NaN
3 B NaN
4 B NaN
5 B NaN
6 B NaN
7 C NaN
8 C NaN
9 C NaN
10 C NaN
11 C NaN
Как мне использовать pandas для получения следующего фрейма данных?
df_u = pd.DataFrame({'Alpha':['A','A','A','B','B','B','B','C','C','C','C','C'],'Beta' : [1,2,3,1,2,2,3,1,2,2,2,3]})
т.е. это:
Alpha Beta
0 A 1
1 A 2
2 A 3
3 B 1
4 B 2
5 B 2
6 B 3
7 C 1
8 C 2
9 C 2
10 C 2
11 C 3
Вообще говоря, то, что я пытаюсь достичь, может быть описано следующимлогика:
Предположим, мы сгруппировали df по альфе.
Для каждой группы, для каждой строки в группе ...
, если индекс строки равен минимальному индексу строк в группе, тогда присваивают 1бета для этой строки,
, в противном случае, если индекс строки равен максимальному индексу строк в группе, тогда присвойте 3 бета для этой строки,
иначе присвойте бета 2 этой строке.