【问题标题】:Strange results from timedelta with pandastimedelta 与 pandas 的奇怪结果
【发布时间】:2016-07-30 02:35:56
【问题描述】:

我有一个如下所示的数据框:

df = pd.DataFrame({'date_sent': ['06/11/2015', '', 'Not required', '06/11/2015'], 
                   'date_published': ['06/11/2015', '', '', '23/01/2016']})

我想计算每一行中两个日期之间的差异,所以首先我将字符串转换为日期对象:

df.date_published =  pd.to_datetime(df.date_published.str.replace('Not required', ''))
df.date_sent =  pd.to_datetime(df.date_sent.str.replace('Not required', ''))

然后我从另一个中减去一个:

df['delay'] = df.date_published - df.date_sent

但这给了我一个特殊的结果 - 它不是 2015 年 6 月 11 日和 2016 年 1 月 23 日之间的 226 天:

df
  date_published  date_sent    delay
0     2015-06-11 2015-06-11   0 days
1            NaT        NaT      NaT
2            NaT        NaT      NaT
3     2016-01-23 2015-06-11 226 days

我做错了什么?我正在使用熊猫 v0.18。

【问题讨论】:

  • 啊 - 我认为我的日期格式不正确?我试过df.date_published = pd.to_datetime(df.date_published.str.replace('Not required', ''), format='%d/%m/%Y'),但出现错误。
  • 我无法使用 pandas 18.1 重现决赛桌...您没有将 '06/11/2015' 等转换为数据时间。只有“不需要”

标签: python pandas


【解决方案1】:

看看这是否有帮助。

   print pd.to_datetime('06/11/2016', dayfirst =True, format='%d/%m/%Y', errors = 'ignore')
   print pd.to_datetime('06/11/2016', format='%m/%d/%Y', errors = 'ignore')

2016-11-06 00:00:00
2016-06-11 00:00:00

【讨论】:

    【解决方案2】:

    这两个日期之间正好是 226 天。

    【讨论】:

    • 如果你是英国人就不行 :) 我需要弄清楚如何修复日期格式。
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 2013-10-26
    • 2013-04-16
    • 1970-01-01
    • 2016-11-28
    • 2012-12-16
    • 2012-12-06
    • 2016-08-24
    相关资源
    最近更新 更多