场景:根据前面的问题(Removing the timestamp from a datetime in pandas dataframe),我有一段代码,将excel中的数据读入到熊猫数据中,并使用命令dataframe.to_sql将数据插入给定的SQL数据库。
问题:由于我的日期是以美国格式(mm/dd/yyyy)检索的,而且我的数据库是国际格式的(dd/mm/yyyy),所以我在试图将数据上传到SQL时遇到一个类型错误。
我已经尝试过的内容:--我尝试了上一个问题中给出的建议,并以这种方式运行数据更改,但是当我试图上传到SQL时,我得到了错误。
我目前正在使用的行:
fnl['Date'] = pd.to_datetime(fnl['Maturity'], errors='coerce')它允许运行代码,但在SQL中会产生问题。
我也试过了:
fnl['Date'] = pd.to_datetime(fnl['Date'], format='%m/%d/%Y', errors:'coerce')和
fnl['Date'] = pd.to_datetime(fnl['Date'], format='%m/%d/%Y')还是没有成功。
在代码开始时,我将所有编码更改为utf-8,所以我看不出问题的所在。
问题:如何解决这个问题?
数据示例:
Date
1/15/2023
1/15/2023
6/30/2023
6/30/2023
8/1/2022
8/1/2022
7/25/2022
7/25/2022
7/19/2024
7/13/2022
7/13/2022发布于 2017-09-14 11:57:28
如果您的Date列以国际格式返回日期,则需要在转换为日期时间时反映这一点。
fnl['Date'] = pd.to_datetime(fnl['Date'], format='%m/%d/%Y', errors='coerce')您需要在源中指定格式,这样才能正确地进行转换。
如果要将日期时间转换为%m/%d/%Y格式的字符串,请使用.dt.strftime函数:
fnl['DateString'] = fnl['Date'].dt.strftime('%d/%m/%Y')s = pd.to_datetime(df['Date'], format='%m/%d/%Y', errors='coerce')
s
0 2023-01-15
1 2023-01-15
2 2023-06-30
3 2023-06-30
4 2022-08-01
5 2022-08-01
6 2022-07-25
7 2022-07-25
8 2024-07-19
9 2022-07-13
10 2022-07-13
Name: Date, dtype: datetime64[ns]
s = s.dt.strftime('%d/%m/%Y')
s
0 15/01/2023
1 15/01/2023
2 30/06/2023
3 30/06/2023
4 01/08/2022
5 01/08/2022
6 25/07/2022
7 25/07/2022
8 19/07/2024
9 13/07/2022
10 13/07/2022
Name: Date, dtype: objecthttps://stackoverflow.com/questions/46218306
复制相似问题