【问题标题】:TypeError passing Series with dtype int to dateutil.relativedeltaTypeError 将带有 dtype int 的 Series 传递给 dateutil.relativedelta
【发布时间】:2020-06-03 00:00:44
【问题描述】:

我正在尝试使用dateutil.relativedelta.relativedeltaint 类型的熊猫系列添加到datetime 系列。

df.loc[:,'calc_eli_date'] = (
    datetime.datetime(df['pol_eff_date'])
    + relativedelta(years=df['frt_elig_year'])
)

df['pol_eff_date']datetime64[ns] 类型

df['frt_elig_year']int

但我收到以下错误:

TypeError: cannot convert the series to class 'int' 

【问题讨论】:

  • 我没有看到任何问题。没有?,没有帮助。
  • 请提供示例数据,简要说明您正在尝试做什么以及什么不起作用

标签: python-3.x pandas python-dateutil


【解决方案1】:

dateutil.relativedata.relativedata 构造函数只接受日期时间和整数参数 - 不接受数组或 pandas 对象。

改用pd.to_timedelta

df['calc_eli_date'] = (
    df['pol_eff_date'] + pd.to_timedelta(df['frt_elig_year'], unit='Y')
)

【讨论】:

  • 使用上面的方法得到了同样的错误信息。 pol_eff_date 采用日期时间格式,例如。 2006-05-03,frt_elig_year 是整数,例如。 15
  • 抱歉错误信息是:SyntaxError: unexpected EOF while parsing
  • 抱歉 - 更新了我的答案,删除了同样问题的 datetime.datetime。你可以发布你的实际代码吗?如果您有语法错误,这是一个不相关的问题,除非我们看到您的实际实现,否则我们无法调试。请参阅这篇关于创建minimal reproducible example 的帖子,了解一些非常好的提示!
  • df['calc_eli_date'] = (df['pol_eff_date'] +pd.to_timedelta(df['frst_elig_year'], unit='Y')
  • 文件“”,第 1 行 df['calc_eli_date'] = (df['pol_eff_date'] +pd.to_timedelta(df['frst_elig_year'], unit ='Y') ^ SyntaxError: 解析时出现意外 EOF
猜你喜欢
  • 1970-01-01
  • 2019-02-24
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 2013-08-06
  • 2021-06-01
相关资源
最近更新 更多