Lorsque j'ai lu une date Excel avec pandas.read_excel, les données sont devenues un numéro de série en raison du formatage. J'ai décidé de le convertir car je souhaite le traiter uniformément avec datetime.datetime.
--Référence
# date_int :Valeur série
if date_int < 60:
# 1900-03-Avant 01
days = date_int -1
else:
# 1900-03-Pour 01 ou plus tard
days = date_int - 2
date_time = pandas.to_datetime('1900/01/01') + datetime.timedelta(days=days)
--Environnement --macOS Catalina version 10.15.7 --Microsoft Excel pour Mac version 16.42 - Python 3.8.5 - pandas 1.1.3 --Référence
Le fichier Excel à lire ressemble à ceci
import datetime
import pandas
def get_datetime(val: object) -> datetime.datetime:
"""Obtenez la date.
:param val:La valeur d'origine de la date
:return:Date si date ou numéro de série, Aucun autrement
"""
val_type = type(val)
# datetime.S'il s'agit de datetime, renvoyez-le tel quel
if val_type is datetime.datetime:
return val
# pandas.L'horodatage est datetime.Il hérite de datetime et datetime.Il semble qu'il puisse être traité en tant que datetime, alors renvoyez-le tel quel
if issubclass(val_type, datetime.datetime):
return val
#S'il est int, datetime comme valeur série.Convertir en datetime et retourner
if val_type is int:
if val < 60:
# 1900-03-Avant 01
days = val -1
else:
# 1900-03-Pour 01 ou plus tard
days = val - 2
return pandas.to_datetime('1900/01/01') + datetime.timedelta(days=days)
return None
if __name__ == '__main__':
#Charger Excel avec des pandas
sheet = pandas.read_excel('Book.xlsx', sheet_name='Sheet1', header=None)
for index, row in sheet.iterrows():
date = get_datetime(row[0])
if date is not None:
print(date.strftime('%Y/%m/%d'))
production
2020/10/14
2020/10/15
2020/10/16
2020/10/17
Recommended Posts