«ValueError: невозможно преобразовать число с плавающей запятой в целое число» при преобразовании даты в день / неделю / месяц / год - PullRequest
0 голосов
/ 12 марта 2019

При работе со столбцом даты в фрейме данных panda с очень большими данными я получаю сообщение об ошибке:

ValueError: cannot convert float NaN to integer

при преобразовании даты в день / неделю / месяц / год.Я должен разделить в формате день / неделя / месяц / и подсчитать соответствующие идентификаторы в соответствии с этим.

Ниже процесса я следовал:

  1. Чтобы преобразовать столбец в датуформат:
    df1['REQUESTTIMESTAMP'] = pd.to_datetime(df['REQUESTTIMESTAMP'],format= '%d-%b-%y %H.%M.%S.%f')

  2. Для разделения даты в день / неделя / месяц / формат

    df1['Day/Week/Month/Year'] = df['REQUESTTIMESTAMP'].apply(lambda x: "%d/%d/%d/%d" % (x.day, x.week, x.month, x.year))

при выполнении этого я получаю ошибку:

`File "<pyshell#333>", line 1, in <lambda>
df1['Day/Week/Month/Year'] = df1['REQUESTTIMESTAMP'].apply(lambda x: "%d/%d/%d/%d" % (x.day, x.week, x.month, x.year))
ValueError: cannot convert float NaN to integer`

Если ошибка исправлена, я должен сгруппировать идентификаторы в соответствии с неделей, месяцем и годом, используя: df1.groupby('Day/Week/Month/Year') ['CONVERSATIONID'].agg(['count', 'nunique'])

Ожидается o/ p:

                     count  nunique
Day/Week/Month/Year                
12/41/10/2018           12       12
24/43/10/2018            2        2
30/44/10/2018            3        3

Original input file:

1050                    12-OCT-18 17.58.09.822000000<<coming correct
1055                    15-OCT-18 17.02.05.512000000<<Nat
1058                    15-OCT-18 17.10.55.264000000<<Nat
1061                    15-OCT-18 17.12.18.139000000<<Nat

Format of date column in my df coming as Nat:

    10                     1046         ...               12/40/10/2018
11                     1050         ...               12/40/10/2018
12                     1055         ...                         NaT
13                     1058         ...                         NaT
14                     1061         ...                         NaT
15                     1064         ...               24/42/10/2018
16                     1067         ...               24/42/10/2018
17                     1070         ...               30/43/10/2018
18                     1073         ...               30/43/10/2018
19                     1076         ...               30/43/10/2018
20                     1078         ...                         NaT
21                     1081         ...                         NaT
22                     1083         ...                         NaT
23                     1086         ...                         NaT
24                     1089         ...                         NaT
25                     1096         ...                         NaT

O / P от использования strftime:

df1.groupby('Day/Week/Month/Year') ['CONVERSATIONID'].agg(['count', 'nunique'])
                     count  nunique
Day/Week/Month/Year                
12/40/10/2018           12       12
24/42/10/2018            2        2
30/43/10/2018            3        3
NaT                  39518    15376

Будет признательна любая помощь в том, как исправить ошибку и дату, поступающую в виде NaT, после преобразования?

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