python - 在数据框中使用日期字符串
问题描述
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?
解决方案
您可以在下面尝试使用该功能...
>>> 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 文件时,最好在导入时清理数据。
df = pd.read_excel('file_name.xlsx', dtype=str)
df = pd.read_excel('file_name.xlsx', converters={'col1':str,'date':str})
推荐阅读
- xamarin.ios - 不是给定文化的有效日历。参数名称:值
- r - 根据值从数据框中删除行,忽略 NA
- ios - 是否可以将谷歌日历添加到 iOS 应用程序?
- oracle-apex - 使用 apex_web_service.make_rest_request 在 oracle apex 中调用 Oracle EBS 标准 Web 服务
- azure-ad-graph-api - O365:TenantUsage_getOffice365ActiveUserDetail 一周未更新?
- fortran - fortran 从文件读取和写入(从 .msh 读取并写入 dat)
- java - 如何根据java中的特定值交换arraylist元素
- javascript - 在外部类对象中访问时,可取消的 Promise 会丢失取消属性
- ios - SkyFloatingLabelTextField 在焦点上自动向上移动标签
- reactjs - 带有图标的按钮上的剑道工具提示在 Chrome 上无法正确显示