将字符串日期转换为日期并将时间删除到数据框中
Converting string date to a date and dropping the time in a dataframe
我正在尝试将字符串日期和时间(例如:“6/30/2015 0:00”)转换为以下格式的日期:%Y/%m/%d。我正在尝试对数据框列中的所有值执行此操作。我几乎拥有它但似乎无法摆脱时间部分。我还需要将此方法应用于可能具有 null/blank 值的另一列。这是我尝试过的,关于如何让它工作有什么建议吗?
cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'], format="%Y/%m/%d")
ValueError: unconverted data remains: 0:00
***示例数据(不包括所有字段;长度超过 30 个)
这是 STATUS_DATE
的前 5 个值的示例系列:
0 6/30/2015 0:00
1 6/24/2015 0:00
2 6/24/2015 0:00
3 6/24/2015 0:00
4 6/24/2015 0:00
Name: STATUS_DATE, dtype: object
尝试:
cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'][:cnms_df['STATUS_DATE'].index(' ')[0]], format="%Y/%m/%d")
假设您的日期一致,只需使用 split
切断时间段即可。希望对您有所帮助。
如果你所有的约会时间都是'%d/%m/%Y %H:%M
那么这将有效
df = pd.DataFrame({'date' : ['6/30/2015 0:00', '6/30/2015 15:35']})
print(df)
date
0 6/30/2015 0:00
1 6/30/2015 15:35
df["date"] = pd.to_datetime(df["date"], format="%m/%d/%Y %H:%M").dt.normalize()
print(df)
date
0 2015-06-30
1 2015-06-30
print(df.dtypes)
date datetime64[ns]
dtype: object
您可以在将字符串日期转换为 datetime64[ns] 之前丢弃时间部分。
df = pd.DataFrame({'date' : ['6/30/2015 0:00']})
df['new_date'] = pd.to_datetime(df['date'].str.split().str[0], format = '%m/%d/%Y')
print(df)
date new_date
0 6/30/2015 0:00 2015-06-30
df.dtypes
date object
new_date datetime64[ns]
注意:我创建了列 new_date 来与字符串格式日期进行比较,理想情况下,您只需将日期分配给同一个变量
我正在尝试将字符串日期和时间(例如:“6/30/2015 0:00”)转换为以下格式的日期:%Y/%m/%d。我正在尝试对数据框列中的所有值执行此操作。我几乎拥有它但似乎无法摆脱时间部分。我还需要将此方法应用于可能具有 null/blank 值的另一列。这是我尝试过的,关于如何让它工作有什么建议吗?
cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'], format="%Y/%m/%d")
ValueError: unconverted data remains: 0:00
***示例数据(不包括所有字段;长度超过 30 个)
这是 STATUS_DATE
的前 5 个值的示例系列:
0 6/30/2015 0:00
1 6/24/2015 0:00
2 6/24/2015 0:00
3 6/24/2015 0:00
4 6/24/2015 0:00
Name: STATUS_DATE, dtype: object
尝试:
cnms_df['STATUS_DATE'] = pd.to_datetime(cnms_df['STATUS_DATE'][:cnms_df['STATUS_DATE'].index(' ')[0]], format="%Y/%m/%d")
假设您的日期一致,只需使用 split
切断时间段即可。希望对您有所帮助。
如果你所有的约会时间都是'%d/%m/%Y %H:%M
那么这将有效
df = pd.DataFrame({'date' : ['6/30/2015 0:00', '6/30/2015 15:35']})
print(df)
date
0 6/30/2015 0:00
1 6/30/2015 15:35
df["date"] = pd.to_datetime(df["date"], format="%m/%d/%Y %H:%M").dt.normalize()
print(df)
date
0 2015-06-30
1 2015-06-30
print(df.dtypes)
date datetime64[ns]
dtype: object
您可以在将字符串日期转换为 datetime64[ns] 之前丢弃时间部分。
df = pd.DataFrame({'date' : ['6/30/2015 0:00']})
df['new_date'] = pd.to_datetime(df['date'].str.split().str[0], format = '%m/%d/%Y')
print(df)
date new_date
0 6/30/2015 0:00 2015-06-30
df.dtypes
date object
new_date datetime64[ns]
注意:我创建了列 new_date 来与字符串格式日期进行比较,理想情况下,您只需将日期分配给同一个变量