熊猫:版本0.18.0中的时间戳(带时区)

时间:2016-04-01 17:31:22

标签: python pandas timezone timestamp

当我这样做时

df[ts_col]

我看到了这个输出

Series: 0   2015-02-04 23:21:15-06:00
Name: Timestamp, dtype: datetime64[ns, US/Central]

当我这样做时

df[ts_col].apply(lambda x: x)

我看到了

Series: 0   2015-02-05 05:21:15
Name: Timestamp, dtype: datetime64[ns]

当我这样做时

df[ts_col].apply(lambda x: str(x))

我看到了

Series: 0    2015-02-05 05:21:15
Name: Timestamp, dtype: object

没有意义。有谁能解释一下?具体来说,我对如何从时间戳中提取日期2015-02-04感兴趣?

1 个答案:

答案 0 :(得分:1)

这是一个已知的熊猫问题,看起来几乎是固定的:

https://github.com/pydata/pandas/issues/11800

https://github.com/pydata/pandas/issues/11757

现在,你可以用最后一个例子来解决它:

In [182]: df["d"]
Out[182]:
0   2016-03-31 20:00:00-04:00
1   2016-03-31 21:00:00-04:00
2   2016-03-31 22:00:00-04:00
3   2016-03-31 23:00:00-04:00
4   2016-04-01 00:00:00-04:00
5   2016-04-01 01:00:00-04:00
Name: d, dtype: datetime64[ns, US/Eastern]

In [183]: df["d"].apply(lambda x: str(x))
Out[183]:
0    2016-04-01 00:00:00
1    2016-04-01 01:00:00
2    2016-04-01 02:00:00
3    2016-04-01 03:00:00
4    2016-04-01 04:00:00
5    2016-04-01 05:00:00
Name: d, dtype: object

In [184]: df["d"].astype(pd.datetime).apply(lambda x: x.date())
Out[184]:
0    2016-03-31
1    2016-03-31
2    2016-03-31
3    2016-03-31
4    2016-04-01
5    2016-04-01
Name: d, dtype: object
相关问题