问题有点简单。我的目标是计算两个日期之间的天差,比如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' datetime.time'不可转换为日期时间
当我将df导出到excel并且日期正常工作时。任何想法?
答案 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 [' A']和df [' B']的格式,你可以用一个班轮做到这一点。
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)