@@ -650,7 +650,9 @@ class Timestamp(_Timestamp):
650
650
651
651
astimezone = tz_convert
652
652
653
- def replace (self , **kwds ):
653
+ def replace (self , year = None , month = None , day = None ,
654
+ hour = None , minute = None , second = None , microsecond = None , nanosecond = None ,
655
+ tzinfo = None )
654
656
"""
655
657
implements datetime.replace , handles nanoseconds
656
658
@@ -675,10 +677,10 @@ class Timestamp(_Timestamp):
675
677
_TSObject ts
676
678
677
679
# set to naive if needed
678
- tzinfo = self .tzinfo
680
+ _tzinfo = self .tzinfo
679
681
value = self .value
680
- if tzinfo is not None :
681
- value = tz_convert_single(value, ' UTC' , tzinfo )
682
+ if _tzinfo is not None:
683
+ value = tz_convert_single(value, ' UTC' , _tzinfo )
682
684
683
685
# setup components
684
686
pandas_datetime_to_datetimestruct(value , PANDAS_FR_ns , &dts )
@@ -692,38 +694,35 @@ class Timestamp(_Timestamp):
692
694
" {v} for {k}" .format(v = type (v), k = k))
693
695
return v
694
696
695
- for k, v in kwds.items():
696
- if k == ' year' :
697
- dts.year = validate(k, v)
698
- elif k == ' month' :
699
- dts.month = validate(k, v)
700
- elif k == ' day' :
701
- dts.day = validate(k, v)
702
- elif k == ' hour' :
703
- dts.hour = validate(k, v)
704
- elif k == ' minute' :
705
- dts.min = validate(k, v)
706
- elif k == ' second' :
707
- dts.sec = validate(k, v)
708
- elif k == ' microsecond' :
709
- dts.us = validate(k, v)
710
- elif k == ' nanosecond' :
711
- dts.ps = validate(k, v) * 1000
712
- elif k == ' tzinfo' :
713
- tzinfo = v
714
- else :
715
- raise ValueError (" invalid name {} passed" .format(k))
697
+ if year is not None :
698
+ dts.year = validate(' year' , year)
699
+ if month is not None :
700
+ dts.month = validate(' month' , month)
701
+ if day is not None :
702
+ dts.day = validate(' day' , day)
703
+ if hour is not None :
704
+ dts.hour = validate(' hour' , hour)
705
+ if minute is not None :
706
+ dts.min = validate(' minute' , minute)
707
+ if second is not None :
708
+ dts.sec = validate(' second' , second)
709
+ if microsecond is not None :
710
+ dts.us = validate(' microsecond' , microsecond)
711
+ if nanosecond is not None :
712
+ dts.ps = validate(' nanosecond' , nanosecond) * 1000
713
+ if tzinfo is not None :
714
+ _tzinfo = tzinfo
716
715
717
716
# reconstruct & check bounds
718
717
value = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, & dts)
719
718
if value != NPY_NAT:
720
719
_check_dts_bounds(& dts)
721
720
722
721
# set tz if needed
723
- if tzinfo is not None :
724
- value = tz_convert_single(value, tzinfo , ' UTC' )
722
+ if _tzinfo is not None :
723
+ value = tz_convert_single(value, _tzinfo , ' UTC' )
725
724
726
- result = create_timestamp_from_ts(value, dts, tzinfo , self .freq)
725
+ result = create_timestamp_from_ts(value, dts, _tzinfo , self .freq)
727
726
728
727
return result
729
728
0 commit comments