我有一个带有df
和date
列的DataFrame number
。这些列的类型为object
。我想将列df[date]
格式化为datetime64[ns]
,此列应该看起来完全一样。我读过this,并根据它选择了格式的表达式(希望这个表达式看起来不错)。
我的df
看起来像这样:
date number
0 Tue 14-08 3
1 Wed 15-08 5
2 Thu 16-08 10
3 Fri 17-08 18
4 Sat 18-08 22
接下来我要这样做:
df["date"] = pd.to_datetime(df["date"], format = "%a %d-%m")
df["date"]
是datetime64[ns]
,但列已更改:
date number
0 1900-08-14 3
1 1900-08-15 5
2 1900-08-16 10
3 1900-08-17 18
4 1900-08-18 22
我也使用了此方法(但结果与上面相同):
df['date'] = df['date'].apply(lambda x: datetime.datetime.strptime(x,'%a %d-%m'))
和这个(df["date"]
看起来像我想要的但dtype是object
而不是datetime64[ns]
):
df['date'] = df['date'].apply(lambda x: datetime.datetime.\
strptime(x,'%a %d-%m').strftime("%a %d-%m"))
要复制的代码:
#import all what we need
import pandas as pd
import datetime
#Create DataFrame
df = pd.DataFrame({"date":["Tue 14-08",
"Wed 15-08",
"Thu 16-08",
"Fri 17-08",
"Sat 18-08"],
"number":["3","5","10","18","22"]})
print(df.dtypes)
print(df)
#Convert df["date"] column in datetime64[ns]
df["date"] = pd.to_datetime(df["date"], format = "%a %d-%m")
#df['date'] = df['date'].apply(lambda x: datetime.datetime.strptime(x,'%a %d-%m'))
#df['date'] = df['date'].apply(lambda x: datetime.datetime.\
# strptime(x,'%a %d-%m').strftime("%a %d-%m"))
#Check df
print(df.dtypes)
print(df)