TypeError:<class'datetime.time'=“”>不能转换为datetime

时间:2018-03-20 16:21:59

标签: pandas date

问题有点简单。我的目标是计算两个日期之间的天差,比如A和B. 这些是我的尝试:

df['daydiff'] = df['A']-df['B']

df['daydiff'] = ((df['A']) - (df['B'])).dt.days

df['daydiff'] = (pd.to_datetime(df['A'])-pd.to_datetime(df['B'])).dt.days

这些对我有用,但出于某种原因,我这次不断收到此错误:

  

TypeError:class&#39; datetime.time&#39;不可转换为日期时间

当我将df导出到excel并且日期正常工作时。任何想法?

2 个答案:

答案 0 :(得分:3)

使用pd.Timestamp来处理格式化时间的尴尬差异。

df['A'] = df['A'].apply(pd.Timestamp)  # will handle parsing
df['B'] = df['B'].apply(pd.Timestamp)  # will handle parsing
df['day_diff'] = (df['A'] - df['B']).dt.days

当然,如果您不想更改正在输出的DataFrame中的df [&#39; A&#39;]和df [&#39; B&#39;]的格式,你可以用一个班轮做到这一点。

df['day_diff'] = (df['A'].apply(pd.Timestamp) - df['B'].apply(pd.Timestamp)).dt.days

这将为您提供整数之间的天数。

答案 1 :(得分:2)

当我应用emmet02提供的解决方案时,我得到了 TypeError:也无法转换类型的输入[00:00:00]。基本上是说数据帧包含缺少的时间戳记值,它们表示为[00:00:00],并且该值被pandas.Timestamp函数拒绝。

要解决此问题,只需在使用前应用适当的缺失值策略来清理您的数据集

df.apply(pd.Timestamp)