首页 > 解决方案 > 在数据框中使用日期字符串

问题描述

df = pd.DataFrame({'date': ['2021-08-20']}, dtype="datetime64[ns]")

df["date"] = df["date"].astype("object")
>>> df
                  date
0  2021-08-20 00:00:00

我想删除 00:00:00。

def date_func(value)
    print(type(value))
    #TODO: delete 00:00:00
    return value

df["date"] = df["date"].apply(date_func)
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

原始数据是对象类型,但 date_func 方法获取时间戳。为什么??

>>> df.dtypes
date    datetime64[ns]
dtype: object

并且类型从对象类型更改为 datetime64[ns]。我认为数据框数据类型自动更改得太频繁了。

如何删除函数中的 00:00:00?

标签: pythonpandasdataframe

解决方案


您可以在下面尝试使用该功能...

>>> df = pd.DataFrame({'date': ['2021-08-20']}, dtype="datetime64[ns]")
>>> def convert_datetime(dt):
...   return datetime.strftime(dt, '%Y-%m-%d')
...
>>> df['date'] = df['date'].apply(convert_datetime)
>>> df.dtypes
date    object
dtype: object

编辑:

在阅读 excel 文件时,最好在导入时清理数据。

  1. df = pd.read_excel('file_name.xlsx', dtype=str)

  2. df = pd.read_excel('file_name.xlsx', converters={'col1':str,'date':str})


推荐阅读