【发布时间】:2021-05-03 14:45:25
【问题描述】:
我有一个包含两个日期时间列的大型数据集,当我尝试清理它时,我创建了一个适用于这两列的每个单元格的函数:
#dropoff_datetime
def date_time_dropoff(cell):
if pd.isnull(cell) == True:
return('Missing Date Time dropoff')
elif type(cell) == datetime.datetime:
return ('Clean Date Time dropoff')
elif type(cell) != datetime.datetime:
return ('Type error Date Time dropoff')
当我第一次在我的数据帧上运行它时,它返回单元格的类型错误(实际上,当我使用 df.dtypes 时,我看到它是对象类型)。所以接下来我使用 pandas 方法转换 df:
df2['Statue_dropoff_datetime'] = df['dropoff_datetime'].apply(date_time_dropoff)
并再次运行该函数,但它仍然返回类型错误,因为它不是类型 datetim.datetime。但是,一旦我在转换后使用 df.dtypes,我就会获得正确的日期时间类型:
dropoff_datetime datetime64[ns]
没有成功,我尝试了针对类似问题的建议答案,主要是: Converting object column in pandas dataframe to datetime Convert Pandas Column to DateTime Converting object to datetime format in python How to change the datetime format in pandas
顺便说一句,当我开始导入时,我使用:
import datetime
这是我的 df:
dropoff_datetime
2020-06-10 11:16:00
2020-06-21 11:53:06
2020-06-09 13:25:21
2020-06-01 19:06:05
#dropoff_datetime
def date_time_dropoff(cell):
if pd.isnull(cell) == True:
return('Date Time dropoff missing')
elif type(cell) == datetime:
return ('Date Time dropoff clean')
elif type(cell) != datetime:
return ('Date Time dropoff Type error')
df1[‘Statue_dropoff_datetime'] = df['dropoff_datetime'].apply(date_time_dropoff)
当我打印时:
print(pd.value_counts(df1.values.ravel()))
Type error Date Time dropoff 47703
使用df.dtypes 时:
df.dtypes
dropoff_datetime datetime64[ns]
【问题讨论】:
-
您能否确保有一个完整的工作示例,以便其他人更容易重现该问题?谢谢! stackoverflow.com/help/minimal-reproducible-example
-
现在好点了吗? @fischmalte
标签: python pandas dataframe datetime