如何使用 Python 将不同的时间格式转换为"%Y-%m-%d"?



我正在尝试转换任何日期格式"%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]

相关内容

  • 没有找到相关文章

最新更新