Pandas,转换日期时间列格式会更改列类型
Pandas, converting date time column format's changes the column type
我有一个数据框,我在其中将对象列转换为 DateTime 列。
def insert_cows_to_db():
df = pd.read_csv('/home/yovel/PycharmProjects/scr/rivendell/dairyPlanExample.csv')
df['DOB'] = pd.to_datetime(df['DOB'])
print(df)
print(df.dtypes)
输出:
Cow Transponder DOB
0 NaN NaN NaT
1 8.0 9.840007e+14 2016-09-13
2 9.0 9.840007e+14 2014-07-09
3 13.0 9.840007e+14 2015-02-22
4 16.0 9.840007e+14 2014-02-17
Cow float64
Transponder float64
DOB datetime64[ns]
现在我想更改列的日期格式,但是当我使用时:
def insert_cows_to_db():
df = pd.read_csv('/home/yovel/PycharmProjects/scr/rivendell/dairyPlanExample.csv')
df['DOB'] = pd.to_datetime(df['DOB']).dt.strftime('%d-%m-%Y')
print(df)
print(df.dtypes)
输出
Cow Transponder DOB
0 NaN NaN NaN
1 8.0 9.840007e+14 13-09-2016
2 9.0 9.840007e+14 09-07-2014
3 13.0 9.840007e+14 22-02-2015
4 16.0 9.840007e+14 17-02-2014
Cow float64
Transponder float64
DOB object
有没有办法保存日期时间对象因为我随后将此数据上传到 Django 中的数据库并且那里的字段需要 DateTime 对象(如果我理解正确的话)
尝试上传到 Django 的数据库时出错
match = date_re.match(value)
TypeError: expected string or bytes-like object
您可以通过 :
在 pandas 中将日期转换为字符串
df['DOB'].apply(lambda x: x.strftime('%Y-%m-%d'))
然后使用 :
将其转换回 Django 日期时间字段
datetime.datetime.strptime(s, "%Y-%m-%d").date()
我有一个数据框,我在其中将对象列转换为 DateTime 列。
def insert_cows_to_db():
df = pd.read_csv('/home/yovel/PycharmProjects/scr/rivendell/dairyPlanExample.csv')
df['DOB'] = pd.to_datetime(df['DOB'])
print(df)
print(df.dtypes)
输出:
Cow Transponder DOB
0 NaN NaN NaT
1 8.0 9.840007e+14 2016-09-13
2 9.0 9.840007e+14 2014-07-09
3 13.0 9.840007e+14 2015-02-22
4 16.0 9.840007e+14 2014-02-17
Cow float64
Transponder float64
DOB datetime64[ns]
现在我想更改列的日期格式,但是当我使用时:
def insert_cows_to_db():
df = pd.read_csv('/home/yovel/PycharmProjects/scr/rivendell/dairyPlanExample.csv')
df['DOB'] = pd.to_datetime(df['DOB']).dt.strftime('%d-%m-%Y')
print(df)
print(df.dtypes)
输出
Cow Transponder DOB
0 NaN NaN NaN
1 8.0 9.840007e+14 13-09-2016
2 9.0 9.840007e+14 09-07-2014
3 13.0 9.840007e+14 22-02-2015
4 16.0 9.840007e+14 17-02-2014
Cow float64
Transponder float64
DOB object
有没有办法保存日期时间对象因为我随后将此数据上传到 Django 中的数据库并且那里的字段需要 DateTime 对象(如果我理解正确的话)
尝试上传到 Django 的数据库时出错
match = date_re.match(value)
TypeError: expected string or bytes-like object
您可以通过 :
在 pandas 中将日期转换为字符串df['DOB'].apply(lambda x: x.strftime('%Y-%m-%d'))
然后使用 :
将其转换回 Django 日期时间字段datetime.datetime.strptime(s, "%Y-%m-%d").date()