python - 如何将包含 float 和 nan 值的 Dataframe 转换为 datetime python?
问题描述
我有一个数据框浮点列:
data = {'mydate': [23131.0,23131.0,np.nan,22677.0,22554.0,np.nan,23131.0]}
df = pd.DataFrame(data,columns=['mydate'])
mydate
0 23131.0
1 23131.0
2 NaN
3 22677.0
4 22554.0
5 NaN
6 23131.0
它包含空值。我正在尝试使用以下代码将其转换为 datetime python
def dayym(unit):
dates = {date:((epoch + datetime.timedelta(days=date))) for date in unit.unique()}
return unit.map(dates)
df.loc[:,'mydate']= dayym(df['mydate'])
出现以下错误:
dates = {date:((epoch + datetime.timedelta(days=date))) for date in unit.unique()}
File "central_read.py", line 18, in <dictcomp>
dates = {date:((epoch + datetime.timedelta(days=date))) for date in unit.unique()}
ValueError: cannot convert float NaN to integer
有任何想法吗。在这一点上,我已经脱离了他们。
解决方案
要将浮点数转换为日期时间并忽略 np.nan 值,您可以使用pd.to_datetime with errors='coerce'
import pandas as pd
import numpy as np
data = {'mydate': [23131.0,23131.0,np.nan,22677.0,22554.0,np.nan,23131.0]}
df = pd.DataFrame(data)
df['mydate'] = pd.to_datetime(df['mydate'], errors='coerce')
print (df)
这会给你:
mydate
0 1970-01-01 00:00:00.000023131
1 1970-01-01 00:00:00.000023131
2 NaT
3 1970-01-01 00:00:00.000022677
4 1970-01-01 00:00:00.000022554
5 NaT
6 1970-01-01 00:00:00.000023131
推荐阅读
- c++ - Boost Log 的琐碎记录器的“懒惰评估”是如何工作的?
- php - 删除特定运输类别的 Woocommerce“下订单”按钮
- git - 如何重新签出 Git 中的所有文件以从 CRLF 转换为 LF?
- git - 通过 HTTP 克隆 AWS codecommit repo
- javascript - 将自定义字段值添加到下拉时间值
- react-native - 从上到下的半透明背景
- c++ - 当类是另一个模板的模板参数时,您可以使用类模板参数推导吗?
- python - 合并两个列表形成一个json
- android - Android Studio 不生成构建
- ios - 如果在使用 CKFetchRecordZoneChangesOperation 时应用程序被杀死会怎样?