【问题标题】:Problem calculating difference between 2 dates计算两个日期之间的差异的问题
【发布时间】:2021-05-12 05:43:55
【问题描述】:

我无法弄清楚如何获得 2 个给定日期之间的天数差异。我在谷歌和几个论坛中搜索答案并尝试应用几个代码,但它们都给了我一个 TypeError。

spx_test = pd.read_csv('5_12_2019 S&P500 test1.csv')
spx_test.drop(['optionid','index_flag','issuer','exercise_style'], axis= 1, inplace = True)

spx_test

Output

然后我改变了日期的格式,想计算差['days']。

spx_test["date"] = pd.to_datetime(spx_test["date"]).dt.strftime('%Y-%m-%d')
spx_test["exdate"] = pd.to_datetime(spx_test["exdate"]).dt.strftime('%Y-%m-%d')

pd.to_datetime(spx_test['date'])
pd.to_datetime(spx_test['exdate'])
spx_test['days'] = spx_test['exdate'] - spx_test['date']

它告诉我“-: 'str' 和 'str' 不支持的操作数类型”,如果 2 列仍然是字符串,这对我来说很有意义,但我认为 pd.to_datetime 需要我的 Ymd 字符串并转它变成我可以使用运算符的日期。

这里是python新手,所以让我知道我没有看到什么。谢谢!

【问题讨论】:

  • 您实际上还没有将日期时间对象分配给列,您只是调用了它。将pd.to_datetime(spx_test['date']) 更改为spx_test['date'] = pd.to_datetime(spx_test['date']) 更好,删除dt.strftime 方法没有意义创建日期然后将其转换回字符串?
  • 我正在输入类似的内容,所以他们说的是 ^^^ :)。另外你会想要spx_test['days'] = (spx_test['exdate'] - spx_test['date']).dt.days。
  • 谢谢你们,Manakin 和 Rick M,特别是 .dt.days 方法,它给了我整数天数。真的好用!问题解决了。

标签: python pandas dataframe date time


【解决方案1】:

错误 "unsupported operand type(s) for -: 'str' and 'str'" 告诉您您使用的是字符串 (str) 而不是日期

如果你这样做

spx_test["date"] = pd.to_datetime(spx_test["date"])
spx_test["exdate"] = pd.to_datetime(spx_test["exdate"])

spx_test['days'] = spx_test['exdate'] - spx_test['date']

那么你应该得到日期的差异

所有这些都假设您的日期是标准格式并且 pd.to_datetime 没有问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2021-11-25
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多