Skip to content

Commit c28d2cd

Browse files
author
y-p
committed
Merge pull request #3379 from y-p/timestamp_repr
ENH/CLN: make Timestamp repr valid python code, like datetime does.
2 parents 3396dca + b7b36b1 commit c28d2cd

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

pandas/tseries/tests/test_period.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,14 @@ def test_to_timestamp_preserve_name(self):
12981298
conv = index.to_timestamp('D')
12991299
self.assertEquals(conv.name, 'foo')
13001300

1301+
def test_to_timestamp_repr_is_code(self):
1302+
zs=[Timestamp('99-04-17 00:00:00',tz='UTC'),
1303+
Timestamp('2001-04-17 00:00:00',tz='UTC'),
1304+
Timestamp('2001-04-17 00:00:00',tz='America/Los_Angeles'),
1305+
Timestamp('2001-04-17 00:00:00',tz=None)]
1306+
for z in zs:
1307+
self.assertEquals( eval(repr(z)), z)
1308+
13011309
def test_as_frame_columns(self):
13021310
rng = period_range('1/1/2000', periods=5)
13031311
df = DataFrame(randn(10, 5), columns=rng)

pandas/tslib.pyx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,20 +164,25 @@ class Timestamp(_Timestamp):
164164

165165
def __repr__(self):
166166
result = self._repr_base
167+
zone = None
167168

168169
try:
169170
result += self.strftime('%z')
170171
if self.tzinfo:
171172
zone = _get_zone(self.tzinfo)
172-
result += _tz_format(self, zone)
173173
except ValueError:
174174
year2000 = self.replace(year=2000)
175175
result += year2000.strftime('%z')
176176
if self.tzinfo:
177177
zone = _get_zone(self.tzinfo)
178-
result += _tz_format(year2000, zone)
179178

180-
return '<Timestamp: %s>' % result
179+
try:
180+
result += zone.strftime(' %%Z')
181+
except:
182+
pass
183+
zone = "'%s'" % zone if zone else 'None'
184+
185+
return "Timestamp('%s', tz=%s)" % (result,zone)
181186

182187
@property
183188
def _repr_base(self):

0 commit comments

Comments
 (0)