我尝试在ydata_profiling中使用profile_report,但得到以下错误:
TypeError:“pandas._libs.tslibs.timestamps._Timestamp”对象的描述符“to_pydatetime "不适用于”datetime.date“对象。
我发现我使用的pandas Dataframe 有一些日期字段,确实是这些字段导致了这个错误。我使用print(df['effective_date'].apply(type))
,并将datetime.date作为该字段的数据类型。我试图将其转换为时间戳数据类型,但我遇到了一些挑战。
为什么数据类型需要是timestamp?to_pydatetime似乎将timestamp转换为我的数据已经是的datetime。有没有办法避免profile_report尝试将我的数据转换为它已经是的东西?
1条答案
按热度按时间lb3vh1jj1#
我设法绕过了这个问题,对源数据库(在我的例子中是snowflake)将数据存储为DATE或TIMESTAMP(任何变体)的任何列强制datetime 64。
然而,当我尝试使用不同的数据库(Oracle)时,即使在尝试将所有列强制为datetime 64之后,也会遇到同样的错误。在pd.to_datetime()中使用errors ='coerce'和'ignore'进行了尝试。
由于ydata-profiling库的工作方式,调试变得困难。它不会启动导致错误的计算,直到你真正尝试编写profile报告文件。当遇到中断时,调试器不知道进入profiler代码,而是不断将我拖回文件创建的行。