измените NaT на пустое в панде - PullRequest
1 голос
/ 19 сентября 2019

У меня есть фрейм данных (df), который выглядит следующим образом:

        DATES
0         NaT
1  01/08/2003
2         NaT
3         NaT
4  04/08/2003
5         NaT
6  30/06/2003
7  01/03/2004
8  18/05/2003
9         NaT
10        NaT
11 31/10/2003
12        NaT
13        NaT

Я действительно пытаюсь выяснить, как я преобразую фрейм данных, чтобы удалить значения NaT, чтобы получить окончательный результатвыглядит как

        DATES
0         
1  01/08/2003
2         
3         
4  04/08/2003
5         
6  30/06/2003
7  01/03/2004
8  18/05/2003
9         
10        
11 31/10/2003
12        
13  

Я пытался:

df["DATES"].fillna("", inplace = True)

, но безуспешно.

Для информации столбец имеет формат времени данных, установленный с помощью

df["DATES"] = pd.to_datetime(df["DATES"],errors='coerce').dt.strftime('%d/%m/%Y')

Может кто-нибудь дать мне знать, что мне нужно сделать, пожалуйста

Спасибо

Ответы [ 4 ]

3 голосов
/ 19 сентября 2019

Есть проблема NaT строки, поэтому нужно:

df["DATES"] = df["DATES"].replace('NaT', '')
1 голос
/ 19 сентября 2019

df.fillna() работает на значениях numpy.NaN.Ваш "Nat", вероятно, строки.Таким образом, вы можете сделать следующее:

, если вы хотите использовать fillna()

df["DATES"].replace("NaT",np.NaN, inplace=True)
df.fillna("", inplace=True)

Иначе, вы можете просто заменить на желаемую строку

df["DATES"].replace("NaT","", inplace=True)
0 голосов
/ 19 сентября 2019

Ваше преобразование в datetime не работает должным образом на NaT с.
Вы можете проверить это перед вызовом fillna, распечатав df['DATES'][0] и увидев, что вы получаете 'NaT' (строка), а не NaT (ваш требуемый формат)

Вместо этого используйте(например): df['DATES'] = df['DATES'].apply(pd.Timestamp)

Этот пример работал для меня как есть, но обратите внимание, что это не datetime, а pd.Timestamp (это другой формат времени, но его легко использовать).Вам не нужно указывать свой формат времени с этим, ваш текущий формат понимается как pd.Timestamp.

0 голосов
/ 19 сентября 2019

Преобразовать столбец в объект, а затем использовать Series.where:

df['Dates'] = df['Dates'].astype(object).where(df['Date'].notnull(),np.nan)

Или как вы хотите, чтобы np.nan был

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