Я пытаюсь экспортировать фрейм данных в файл Parquet, который позже будет использован в конвейере чем-то, кроме Python или Pandas. (Фабрика данных Azure)
Когда я принимаю файл Parquet позже в потоке, он не может распознать datetime64[ns]. Я бы предпочел просто использовать «ванильный» Python datetime.datetime.
Проблема
Но я не могу этого сделать. Проблема в том, что Pandas принудительно переводит любой объект типа datetime в datetime64[ns], как только он возвращается в кадр данных или серию.
Небольшой примерНапример, предположим, что набор данных радужной оболочки глаза имеет столбец «метка времени»:
Код: Выделить всё
>>> df.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) class timestamp
0 5.1 3.5 1.4 0.2 setosa 2021-02-19 15:07:24.719272
1 4.9 3.0 1.4 0.2 setosa 2021-02-19 15:07:24.719272
2 4.7 3.2 1.3 0.2 setosa 2021-02-19 15:07:24.719272
3 4.6 3.1 1.5 0.2 setosa 2021-02-19 15:07:24.719272
4 5.0 3.6 1.4 0.2 setosa 2021-02-19 15:07:24.719272
>>> df.dtypes
sepal length (cm) float64
sepal width (cm) float64
petal length (cm) float64
petal width (cm) float64
class category
timestamp datetime64[ns]
dtype: object
Код: Выделить всё
>>> df.timestamp[1]
Timestamp('2021-02-19 15:07:24.719272')
>>> type(df.timestamp[1])
>>> df.timestamp[1].to_pydatetime()
datetime.datetime(2021, 2, 19, 15, 7, 24, 719272)
>>> type(df.timestamp[1].to_pydatetime())
Код: Выделить всё
>>> df['ts2'] = df.timestamp.apply(lambda x: x.to_pydatetime())
>>> df.dtypes
sepal length (cm) float64
sepal width (cm) float64
petal length (cm) float64
petal width (cm) float64
class category
timestamp datetime64[ns]
ts2 datetime64[ns]
Я посмотрел, можно ли что-нибудь сделать, чтобы «заглушить» столбец фрейма данных и сделать его дату и время менее точными. Но я ничего не вижу. Я также не вижу возможности указать типы данных столбца при экспорте с помощью метода df.to_parquet().
Есть ли способ создать простой столбец Python datetime.datetime (а не столбец Numpy/Pandas datetime65[ns]) в кадре данных Pandas?
Подробнее здесь: https://stackoverflow.com/questions/662 ... datetime64