Как заменить указанную дату и время на предыдущее значение, но с добавлением минуты? - PullRequest
1 голос
/ 19 июня 2020

Вот мой фрейм данных:

        dt                    country
0       Apr-14-2012 15:25:49  usa
1       Apr-14-2012 15:38:55  japan
2       Jan-00-0              france 
3       Apr-14-2012 16:05:07  uk
4       Apr-14-2012 16:18:13  ireland

И я хочу заменить это недопустимое значение предыдущим значением с добавлением 8 минут.

Вот желаемый фрейм данных:

        dt                    country
0       Apr-14-2012 15:25:49  usa
1       Apr-14-2012 15:38:55  japan
2       Apr-14-2012 15:46:55  france 
3       Apr-14-2012 16:05:07  uk
4       Apr-14-2012 16:18:13  ireland

Я использую этот код:

df["dt"] = pd.to_datetime(df["dt"],errors="coerce")
s = df["dt"].isnull()
df["dt"] = df["dt"].ffill()
df[s] -= pd.Timedelta(minutes=3)
print (df)

Но я получаю такой вывод:

         dt                 country    
0        0 days 00:08:00    0 days 00:08:00
1        0 days 00:08:00    0 days 00:08:00
2        0 days 00:08:00    0 days 00:08:00
3        0 days 00:08:00    0 days 00:08:00
4        0 days 00:08:00    0 days 00:08:00

1 Ответ

0 голосов
/ 19 июня 2020

Я думаю, вы близки, сначала измените bfill на ffill, а затем установите новый столбец с условием s на DataFrame.loc:

df["dt"] = pd.to_datetime(df["dt"],errors="coerce")

s = df["dt"].isnull()
df["dt"] = df["dt"].ffill()
df.loc[s, "dt"]+= pd.Timedelta(minutes=6)

print (df)
                   dt  country
0 2012-04-14 15:25:49      usa
1 2012-04-14 15:38:55    japan
2 2012-04-14 15:44:55   france
3 2012-04-14 16:05:07       uk
4 2012-04-14 16:18:13  ireland
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...