我的数据框看起来像-
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')
答案 0 :(得分:0)
您可以执行以下操作:
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
答案 1 :(得分:0)
您没有在问题中提供足够的详细信息,但是如果您的date
列已经是日期值而不是字符串值,那么我想您的问题是在日期的初始加载期间。 / p>
如果您是通过熊猫pd.read_csv()
加载数据的,那么有很多选项可以用来加载日期,包括可以自动检测日期格式的选项。样本数据中的几行(但不是全部行)会使这种自动检测感到困惑(无法分辨是哪部分是月或日)。
如果date
列已经是日期值,则
df['date'] = pd.to_datetime(df['date'].astype(str), format='%Y-%m-%d')
不会做任何有用的事情。
如果您确实使用过pd.read_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,则根据需要调整上述格式。