【问题标题】:can't transform dates (str) into numeric format无法将日期(str)转换为数字格式
【发布时间】:2019-12-20 20:50:56
【问题描述】:

我想运行此代码,以便通过减去我的数据框中的两列“promo_end_dt”和“promo_start_dt”来提取以天为单位的促销期。这两列中的每一列都具有以下格式:YYYY-MM-DD

#promotions period

from datetime import date as dt

transactions['promo_start_dt'] = pd.to_datetime(promos['promo_start_dt'])
transactions['promo_end_dt'] = pd.to_datetime(promos['promo_end_dt'])

#promos['promos_period'] = promos['promo_end_dt'].sub(promos['promo_start_dt'],axis=0)
promos['promos_period'] = (promos['promo_end_dt'] - promos['promo_start_dt']).dt.days
#promos

但是我不断收到此错误消息:

TypeError Traceback(最近一次调用最后一次) ~\Anaconda3\lib\site-packages\pandas\core\ops__init__.py in na_op(x, y) 967尝试: --> 968 结果 = 表达式.evaluate(op, str_rep, x, y, **eval_kwargs) 969 除了类型错误:

~\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in evaluate(op, op_str, a, b, use_numexpr, **eval_kwargs) 220 如果使用_numexpr: --> 221 返回 _evaluate(op, op_str, a, b, **eval_kwargs) 222 返回_evaluate_standard(op,op_str,a,b)

~\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_numexpr(op, op_str, a, b, truediv, reversed, **eval_kwargs) 126 如果结果为无: --> 127 结果 = _evaluate_standard(op, op_str, a, b) 128

~\Anaconda3\lib\site-packages\pandas\core\computation\expressions.py in _evaluate_standard(op, op_str, a, b, **eval_kwargs) 69 与 np.errstate(all="ignore"): ---> 70 返回操作(a,b) 71

TypeError: 不支持的操作数类型 -: 'str' 和 'str'

在处理上述异常的过程中,又发生了一个异常:

TypeError Traceback(最近一次调用最后一次) 在 8 9 #promos['promos_period'] = promos['promo_end_dt'].sub(promos['promo_start_dt'],axis=0) ---> 10 个促销['promos_period'] = (promos['promo_end_dt'] - promos['promo_start_dt']).dt.days 11 #促销

~\Anaconda3\lib\site-packages\pandas\core\ops__init__.py 在包装器中(左,右) 1046 1047 与 np.errstate(all="ignore"): -> 1048 结果 = na_op(左值,右值) 第1049章 1050 left, result, index=left.index, name=res_name, dtype=None

~\Anaconda3\lib\site-packages\pandas\core\ops__init__.py in na_op(x, y) 第968章 969 除了类型错误: --> 970 结果 = masked_arith_op(x, y, op) 971 第972章

~\Anaconda3\lib\site-packages\pandas\core\ops__init__.py in masked_arith_op(x, y, op) 445 如果 mask.any(): 446 与 np.errstate(all="ignore"): --> 447 结果[掩码] = op(xrav[掩码], com.values_from_object(yrav[掩码])) 448 449 其他:

TypeError: 不支持的操作数类型 -: 'str' 和 'str'

【问题讨论】:

  • 您正在将transactions 数据帧中的日期时间更改为日期时间,然后在promos 数据帧中调用该操作。
  • :有道理!谢谢

标签: python pandas data-analysis


【解决方案1】:

这一行:

promos['promos_period'] = (promos['promo_end_dt'] - promos['promo_start_dt']).dt.days

应该是:

promos['promos_period'] = (transactions['promo_end_dt'] - transactions['promo_start_dt']).dt.days

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2013-08-17
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多