Python 数据帧中的日期转换
我的数据框看起来像-Python 数据帧中的日期转换,python,python-3.x,pandas,Python,Python 3.x,Pandas,我的数据框看起来像- date cnt 2020-05-09 301 2020-07-09 402 2020-08-09 403 2020-09-09 402 2020-09-14 512 2020-10-09 403 2020-11-09 403 date cnt 2020-09-05 301 2020-09-07 402 2020-09-08 403 2020-09-09 402 2020-09-14 512 2020-09-10 40
date cnt
2020-05-09 301
2020-07-09 402
2020-08-09 403
2020-09-09 402
2020-09-14 512
2020-10-09 403
2020-11-09 403
date cnt
2020-09-05 301
2020-09-07 402
2020-09-08 403
2020-09-09 402
2020-09-14 512
2020-09-10 403
2020-09-11 403
我希望我的数据框看起来像-
date cnt
2020-05-09 301
2020-07-09 402
2020-08-09 403
2020-09-09 402
2020-09-14 512
2020-10-09 403
2020-11-09 403
date cnt
2020-09-05 301
2020-09-07 402
2020-09-08 403
2020-09-09 402
2020-09-14 512
2020-09-10 403
2020-09-11 403
9月14日,即2020-09-14是正确的,但剩余的日期我需要在“%Y-%m-%d”中进行转换。如何在python中进行转换?下面给出了我的代码-
df['date'] = pd.df(df['date'].astype(str), format='%Y-%m-%d')
您可以执行以下操作:
from datetime import datetime, timedelta
from pandas import DataFrame
import pandas as pd
df = DataFrame.from_dict(
{'Alfa': [1, 2, 3],
'Bravo': [4, 5, 6],
'Date': [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y") for _ in range(3)]},
orient='index',
columns=['A', 'B', 'C']).T
print(df)
# Alfa Bravo Date
# A 1 4 10/03/2020
# B 2 5 10/02/2020
# C 3 6 10/01/2020
df['Date'] = pd.to_datetime(df.Date).dt.strftime('%Y-%m-%d')
print(df)
# Alfa Bravo Date
# A 1 4 2020-10-03
# B 2 5 2020-10-02
# C 3 6 2020-10-01
您在问题中没有提供足够的详细信息,但是如果您的
date
列已经是日期值而不是字符串值,我猜您的问题是在日期的初始加载期间
如果您通过pandaspd.read\u csv()
加载数据,则有许多加载日期的选项,包括尝试自动检测日期格式的选项。示例数据中的几行(但不是所有行)会混淆这种自动检测(它无法区分哪一部分是月份或日期)
如果date
列已经是日期值,则
df['date']=pd.to_datetime(df['date'].astype(str),格式='%Y-%m-%d')
不会做任何有用的事
如果您确实使用了pd.read\u csv()
并且磁盘上的日期为YYYY-MM-DD,请尝试改用此选项:
import pandas as pd
import numpy as np
myDateLoader = lambda d: np.datetime64('NaT') if d == '' or d == 'NULL' or d.startswith('9999-12-31') else np.datetime64(datetime.strptime(d[:10], '%Y-%m-%d'))
df = pd.read_csv('file.csv', converters={'date': myDateLoader})
如果它们不是磁盘上的YYYY-MM-DD,则根据需要调整上述格式。它不起作用…我的数据没有变化frame@JohnDavis你没有提供数据,所以我似乎无法理解你得到的结果。也许你可以加上它。我提供的解决方案在我的具体示例中解决了这个问题。@JohnDavis您尝试过我的解决方案吗?如果有的话,你遇到了什么样的错误?@JohnDavis感谢你的接受。如果可能的话,我也希望能投赞成票,回答你的问题好吗?请发布原始数据的样本,因为它来自该文件。