У меня есть датафрейм со столбцом даты. Столбец включает в себя «пользовательские» и «общие» типы данных. Я хочу изменить все это формат даты и времени. «43891» означает «01.03.2020 00:00:00»
TARİH
28.02.2020 00:00:00 -->custom
28.02.2020 00:00:00 -->custom
28.02.2020 00:00:00 -->custom
43891 -->general
43891 -->general
43891 -->general
.
.
Вот то, что я попробовал ниже, та же проблема со мной (ссылка , меняющая все даты на стандартное время даты в кадре данных )
import pandas as pd
from datetime import datetime, timedelta
def from_excel_ordinal(ordinal, _epoch0=datetime(1899, 12, 31)):
if ordinal >= 60:
ordinal -= 1 # Excel leap year bug, 1900 is not a leap year!
return (_epoch0 + timedelta(days=ordinal)).replace(microsecond=0)
df = pd.read_excel('D:\Documents\Desktop\deneme/deneme1.xlsx', sheet_name='Sheet1')
m = df['TARİH'].astype(str).str.isdigit()
df.loc[m, 'TARİH'] = \
df.loc[m, 'TARİH']\
.astype(int)\
.apply(from_excel_ordinal)
df['TARİH'] = pd.to_datetime(df['TARİH'], errors='coerce')
df.to_excel('D:\Documents\Desktop\deneme/deneme1.xlsx',index=False)
Когда я применяю эти коды, я делюсь выводом ниже. Ячейки «общего типа» превращаются в «NaT».
print(df.loc[3280:3286, 'TARİH'])
Output:
2020-02-28
2020-02-28
2020-02-28
2020-02-28
NaT
NaT
NaT
Name: TARİH, dtype: datetime64[ns]
В этом решении заменяет все даты на стандартное время даты в кадре данных все столбцы имеют тип данных «общий». Благодаря этому проблема решена. Но когда я применяю приведенные выше коды к моему фрейму данных, формат столбца D превращается в формат «дата-время». Из-за этого я получаю ошибку ниже, когда я запускаю коды 2 раза:
TypeError: cannot astype a datetimelike from [datetime64[ns]] to [int32]
Я буду использовать эти коды каждый день. В связи с этим мне нужно решить проблему формата ячейки. Я могу попробовать и другие методы, если вы предлагаете.
Также у меня 3000 строк. Поэтому я не могу применять ручные методы.