1

我正在使用熊猫 0.12.0。我有一个看起来像的 DataFrame:

                 date         ms
0 2013-06-03 00:10:00  75.846318
1 2013-06-03 00:20:00  78.408277
2 2013-06-03 00:30:00  75.807990
3 2013-06-03 00:40:00  70.509438
4 2013-06-03 00:50:00  71.537499

我想生成第三列“tod”,它只包含日期的时间部分(即在每个值上调用 .time())。我有点像熊猫新手,所以我怀疑这是微不足道的,但我只是不知道该怎么做。

4

2 回答 2

2

只需Timestamptime方法应用于日期列中的项目:

In [11]: df['date'].apply(lambda x: x.time())
    # equivalently .apply(pd.Timestamp.time)
Out[11]:
0    00:10:00
1    00:20:00
2    00:30:00
3    00:40:00
4    00:50:00
Name: date, dtype: object

In [12]: df['tod'] = df['date'].apply(lambda x: x.time())

这给出了一列datetime.time对象。

于 2013-09-01T12:33:26.437 回答
2

使用 Andy 在 Index 上创建的方法比 apply 快

In [93]: df = DataFrame(randn(5,1),columns=['A'])

In [94]: df['date'] = date_range('20130101 9:05',periods=5)

In [95]: df['time'] = Index(df['date']).time

In [96]: df
Out[96]: 
          A                date      time
0  0.053570 2013-01-01 09:05:00  09:05:00
1 -0.382155 2013-01-02 09:05:00  09:05:00
2  0.357984 2013-01-03 09:05:00  09:05:00
3 -0.718300 2013-01-04 09:05:00  09:05:00
4  0.531953 2013-01-05 09:05:00  09:05:00

In [97]: df.dtypes
Out[97]: 
A              float64
date    datetime64[ns]
time            object
dtype: object

In [98]: df['time'][0]
Out[98]: datetime.time(9, 5)
于 2013-09-01T12:40:34.203 回答