Python Forum
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str'
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str'
#1
Can any one help me on this , unable to determince the reason behind the error while performing RFM analysis.

rfm= data_filtered.groupby('ProductID').agg({'Transaction Time': lambda date: (PRESENT - date.max()).days,
                                        'RetailStore': lambda num: len(num),
                                        'Cost': lambda price: price.sum()})
HELP NEEDED!!
Reply
#2
Error:
TypeError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in aggregate(self, func_or_funcs, *args, **kwargs) 3494 try: -> 3495 return self._python_agg_general(func_or_funcs, *args, **kwargs) 3496 except Exception: ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in _python_agg_general(self, func, *args, **kwargs) 1073 if len(output) == 0: -> 1074 return self._python_apply_general(f) 1075 ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in _python_apply_general(self, f) 935 keys, values, mutated = self.grouper.apply(f, self._selected_obj, --> 936 self.axis) 937 ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in apply(self, f, data, axis) 2272 group_axes = _get_axes(group) -> 2273 res = f(group) 2274 if not _is_indexed_like(res, group_axes): ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in <lambda>(x) 1061 func = self._is_builtin_func(func) -> 1062 f = lambda x: func(x, *args, **kwargs) 1063 <ipython-input-30-c2dd1078948c> in <lambda>(date) ----> 1 rfm= data_filtered.groupby('ProductID').agg({'Transaction Time': lambda date: (PRESENT - date.max()).days, 2 'RetailStore': lambda num: len(num), 3 'Cost': lambda price: price.sum()}) TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str' During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) <ipython-input-30-c2dd1078948c> in <module> 1 rfm= data_filtered.groupby('ProductID').agg({'Transaction Time': lambda date: (PRESENT - date.max()).days, 2 'RetailStore': lambda num: len(num), ----> 3 'Cost': lambda price: price.sum()}) ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in aggregate(self, arg, *args, **kwargs) 4654 axis='')) 4655 def aggregate(self, arg, *args, **kwargs): -> 4656 return super(DataFrameGroupBy, self).aggregate(arg, *args, **kwargs) 4657 4658 agg = aggregate ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in aggregate(self, arg, *args, **kwargs) 4085 4086 _level = kwargs.pop('_level', None) -> 4087 result, how = self._aggregate(arg, _level=_level, *args, **kwargs) 4088 if how is None: 4089 return result ~\Anaconda3\lib\site-packages\pandas\core\base.py in _aggregate(self, arg, *args, **kwargs) 488 489 try: --> 490 result = _agg(arg, _agg_1dim) 491 except SpecificationError: 492 ~\Anaconda3\lib\site-packages\pandas\core\base.py in _agg(arg, func) 439 result = compat.OrderedDict() 440 for fname, agg_how in compat.iteritems(arg): --> 441 result[fname] = func(fname, agg_how) 442 return result 443 ~\Anaconda3\lib\site-packages\pandas\core\base.py in _agg_1dim(name, how, subset) 422 raise SpecificationError("nested dictionary is ambiguous " 423 "in aggregation") --> 424 return colg.aggregate(how, _level=(_level or 0) + 1) 425 426 def _agg_2dim(name, how): ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in aggregate(self, func_or_funcs, *args, **kwargs) 3495 return self._python_agg_general(func_or_funcs, *args, **kwargs) 3496 except Exception: -> 3497 result = self._aggregate_named(func_or_funcs, *args, **kwargs) 3498 3499 index = Index(sorted(result), name=self.grouper.names[0]) ~\Anaconda3\lib\site-packages\pandas\core\groupby\groupby.py in _aggregate_named(self, func, *args, **kwargs) 3623 for name, group in self: 3624 group.name = name -> 3625 output = func(group, *args, **kwargs) 3626 if isinstance(output, (Series, Index, np.ndarray)): 3627 raise Exception('Must produce aggregated value') <ipython-input-30-c2dd1078948c> in <lambda>(date) ----> 1 rfm= data_filtered.groupby('ProductID').agg({'Transaction Time': lambda date: (PRESENT - date.max()).days, 2 'RetailStore': lambda num: len(num), 3 'Cost': lambda price: price.sum()}) TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'str'
Reply
#3
check your data - you have str values where you expect to have numbers
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  datetime module question jacksfrustration 10 1,606 Jan-12-2024, 04:54 AM
Last Post: deanhystad
  subtract 2 datetime string jss 4 703 Oct-19-2023, 02:42 PM
Last Post: Larz60+
  discrepancy with datetime with timezone XJia 3 710 Sep-03-2023, 02:58 PM
Last Post: deanhystad
  Type Error: Unsupported Operand jhancock 2 1,067 Jul-22-2023, 11:33 PM
Last Post: jhancock
  Review my code: convert a HTTP date header to a datetime object stevendaprano 1 1,901 Dec-17-2022, 12:24 AM
Last Post: snippsat
  TypeError: unsupported operand type(s) for +: 'dict' and 'int' nick12341234 1 9,206 Jul-15-2022, 04:04 AM
Last Post: ndc85430
  Trying to delete rows above a specific datetime value cubangt 19 11,001 May-09-2022, 08:57 PM
Last Post: deanhystad
  TypeError: unsupported opperand type(s) for %: 'int' and 'list' cool_person 7 2,096 May-07-2022, 08:40 AM
Last Post: ibreeden
  unsupported operand type(s) for %: 'list' and 'int' RandomCoder 4 32,702 May-07-2022, 08:07 AM
Last Post: menator01
  Problem with datetime [SOLVED] AlphaInc 3 2,543 Apr-22-2022, 01:33 PM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020