Обновление столбца панд для заданного диапазона дат больше не работает после создания нового столбца - PullRequest
0 голосов
/ 05 июля 2019

У меня есть датафрейм pandas с индексом даты. Я могу обновить один из его столбцов для заданного диапазона дат, но все не работает, если сначала создается новый столбец на основе этого:

import pandas as pd

df = pd.read_csv('https://pylie.com/dl/readings/bikes-nyc-pylie.csv', index_col=0)
df.index = pd.to_datetime(df.index)

print(df.tail(5))

df.loc['2016-10-29':]['temperature'] = 20.0
print(df.tail(5))

df['temperature_f'] = df['temperature'].copy()

df.loc['2016-10-29':]['temperature'] = 40.0
print(df.tail(5))

выход:

            temperature  precipitation  brooklyn  manhattan  williamsburg  queensboro
date                                                                                 
2016-10-27          8.6          35.81       651       1558          2137        1902
2016-10-28          7.5           0.00      2021       3872          4271        3202
2016-10-29         10.6           0.00      1639       3160          4027        2920
2016-10-30         19.1          14.22      1702       2971          3531        2547
2016-10-31          9.4           0.00      2648       4876          5440        3720

            temperature  precipitation  brooklyn  manhattan  williamsburg  queensboro
date                                                                                 
2016-10-27          8.6          35.81       651       1558          2137        1902
2016-10-28          7.5           0.00      2021       3872          4271        3202
2016-10-29         20.0           0.00      1639       3160          4027        2920
2016-10-30         20.0          14.22      1702       2971          3531        2547
2016-10-31         20.0           0.00      2648       4876          5440        3720

            temperature  precipitation  brooklyn  manhattan  williamsburg  queensboro  temperature_f
date                                                                                                
2016-10-27          8.6          35.81       651       1558          2137        1902            8.6
2016-10-28          7.5           0.00      2021       3872          4271        3202            7.5
2016-10-29         20.0           0.00      1639       3160          4027        2920           20.0
2016-10-30         20.0          14.22      1702       2971          3531        2547           20.0
2016-10-31         20.0           0.00      2648       4876          5440        3720           20.0

версия для панд - 0.24.1

1 Ответ

1 голос
/ 05 июля 2019

Сделайте это вместо:

df.loc['2016-10-29':, 'temperature'] = 20.0

Добавьте селектор для индекса и столбца, который вы пытаетесь обновить, в одном вызове .loc, иначе нет гарантии, что исходный DataFrame будет обновлен.Это также применимо к обновлению существующего столбца.

При добавлении нового столбца вам не нужно использовать .copy().Итак, df['temperature_f'] = df['temperature'] достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...