Список передается как ссылка на функцию. Таким образом, список разделяется между глобальным пространством и функцией. Первое изменение изменяет список, и это изменение отражается в обоих пространствах. Но тогда вы делаете и присваиваете переменной списка. Это создает новый список в функции. Исходный список существует в глобальном пространстве, но он больше не существует в этой функции. Таким образом, все изменения, внесенные в список в функции из этой точки, видны только внутри функции.
Другой способ думать об этом экземпляре состоит в том, что этот список является типом контейнера. Первая строка функции меняет то, что находится в контейнере. Вторая строка (назначение) фактически изменяет используемый вами контейнер. Это то, что верно для списков, но также и для любого объекта. Вот почему решение, данное @Chris_Rands в комментариях, работает: оно изменяет то, что находится в контейнере, оно не меняет контейнер.
Сначала создайте DatetimeIndex
, затем агрегируйте по Grouper
с days
и idxmax
idxmin
для даты и времени для min
и max
температура:
df['DT'] = pd.to_datetime(df['DT'])
df = df.set_index('DT')
df = df.groupby(pd.Grouper(freq='D'))['T-C'].agg(['idxmax','idxmin','max','min'])
print (df)
idxmax idxmin max min
DT
2015-01-01 2015-01-01 05:00:00 2015-01-01 00:00:00 -2.0 -2.5
2015-01-02 2015-01-02 00:00:00 2015-01-02 03:00:00 1.1 0.5