我正在尝试转换任何日期格式"%Y-%m-%d"。在我的代码,我得到一个TypeError日期时间。Date不适用于'str'对象。
def open_csv2():
browse_text2.set("Proccessing CSV...")
csv2file = filedialog.askopenfilename(parent=root, title="Select the CSV", filetypes=[("Text file", "*.csv")])
if csv2file:
df = pd.read_csv(csv2file, usecols=['date'])
dates = df['date']
new_dates = []
for i in dates:
n_date = datetime.strftime(i,"%Y-%m-%d")
new_dates.append({'date':n_date})
new_dates.to_csv('__newDates.csv', index=False)
root.quit()
我得到这个错误:TypeError:描述符'strftime'为'datetime '。Date '对象不适用于'str'对象。
谢谢!
您的datetime.strftime(i,"%Y-%m-%d")
中的i
应该是datetime
格式,而不是str
格式。
当您从csv导入数据框时,您的df['date']
列因此可能是str
格式。请检查date
列中数据的type
如果你想将df['date']
转换为字符串,那么你应该使用datetime.strptime(i, "%Y-%m-%d")
,而不是strftime
函数。
Try下面的例子:
Sample Data
Print(df)
date
0 28-01-2020
1 15-02-2020
2 15-03-2020
3 25-03-2020
4 01-04-2020
5 30-05-2020
看到数据类型:
这是一个对象数据类型,而不是datetime
格式。
print(df.dtypes)
date object
dtype: object
Datetime转换:
将其转换为datetime
,您将发现数据类型发生了变化。
df['date'] = pd.to_datetime(df['date'])
print(df)
date
0 2020-01-28
1 2020-02-15
2 2020-03-15
3 2020-03-25
4 2020-01-04
5 2020-05-30
print(df.dtypes)
date datetime64[ns]
dtype: object
还可以查看帮助部分,例如help(pd.to_datetime)
:
Examples
--------
Assembling a datetime from multiple columns of a DataFrame. The keys can be
common abbreviations like ['year', 'month', 'day', 'minute', 'second',
'ms', 'us', 'ns']) or plurals of the same
>>> df = pd.DataFrame({'year': [2015, 2016],
... 'month': [2, 3],
... 'day': [4, 5]})
>>> pd.to_datetime(df)
0 2015-02-04
1 2016-03-05
dtype: datetime64[ns]