ошибка pandas с использованием df.astype

Я просто пытаюсь преобразовать столбец числовых строк в целые числа. Вот что я пытаюсь:

df.date = df.date.astype(np.int64)

Но я получаю предупреждение:

/Users/austin/anaconda/lib/python3.5/site-packages/pandas/core/generic.py:2773: SettingWithCopyWarning: попытка установить значение для копии фрагмента из DataFrame. Попробуйте вместо этого использовать .loc[row_indexer,col_indexer] = значение

См. предостережения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self[имя] = значение

Не знаю, что это значит. Я также пробовал:

df.date = df.date.apply(int)

И я получаю то же предупреждение, что и выше.

Почему это не работает и как правильно?


person Austin    schedule 04.04.2017    source источник
comment
На мой взгляд, этот код идеален, но кажется, что некоторые проблемы могут быть в коде раньше. Можете ли вы показать больше строк?   -  person jezrael    schedule 04.04.2017
comment
хм, этот комментарий помог. все, что я делаю до этого, читается в двух файлах .pkl, которые, как я думал, имеют один и тот же формат, и объединяют их, а затем пытаются выполнить эту операцию. однако, если я выполняю операции для каждого по отдельности, тогда это работает. Не уверен, почему, но я думаю, что сделал неправильное предположение о данных   -  person Austin    schedule 04.04.2017
comment
Возможный дубликат Попытка установить значение для копии фрагмента из DataFrame Этот вопрос задавался SO раз и снова.   -  person DYZ    schedule 04.04.2017
comment
это полезно, но я не вижу, чтобы это объясняло, почему есть предупреждение для моего объединенного DF, а не для каждого в отдельности   -  person Austin    schedule 04.04.2017
comment
Вы передали copy=False pd.concat()?   -  person DYZ    schedule 04.04.2017
comment
Хм, нет, я этого не делал. немного неясно из документов, если False, не копировать данные без необходимости. В смысле не копировать дубликаты? Потому что между df1 и df2 не должно быть дубликатов одной и той же точной строки.   -  person Austin    schedule 04.04.2017
comment
df.date = не работает, вам нужен df['date']   -  person firelynx    schedule 04.04.2017


Ответы (1)


Функция astype возвращает новый массив. Вам нужно присвоить результат:

date = date.astype(int)
person Axis    schedule 04.04.2017