UPDATE:
Пожалуйста, загрузите мой полный набор данных здесь .
мой тип данных:
>>> df.dtypes
increment int64
spread float64
SYM_ROOT category
dtype: object
Я понял, что проблема могла быть вызвана тем фактом, что мой SYM_ROOT
является переменной категории.
Чтобы повторить проблему, вы можете сначала сделать следующее:
df=pd.read_csv("sf.csv")
df['SYM_ROOT']=df['SYM_ROOT'].astype('category')
Но я все еще озадачен тем, почему мой SYM_ROOT
приведет к заполнению пробелов в increment
NA? Если для групповой категории и целочисленного значения по умолчанию не будет сбалансированной панели.
Я заметил, что поведение pd.groupby().last
отличается от поведения pd.groupby().tail(1)
.
Например, предположим, у меня есть следующие данные:
![enter image description here](https://i.stack.imgur.com/mOwoU.png)
increment
- это целое число от 0 до 4680. Однако для некоторой переменной SYM_ROOT между ними есть пробелы. Например, 4 могут отсутствовать в нем.
Что я хочу сделать, так это сохранить последнее наблюдение для каждой группы.
Если я сделаю df.groupby(['SYM_ROOT','increment']).last()
, кадр данных станет:
![enter image description here](https://i.stack.imgur.com/Gcugf.png)
Если я сделаю df.groupby(['SYM_ROOT','increment']).tail(1)
, кадр данных станет:
![enter image description here](https://i.stack.imgur.com/rp75O.png)
Мне кажется, что оператор last()
создаст сбалансированные данные временных рядов и заполнит пробелы NaN, а оператор tail(1)
- нет. Это правильно?