当我这样做时
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
感兴趣?
答案 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