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

日付の時刻部分のみを含む 3 番目の列「tod」を生成したいと考えています (つまり、各値に対して .time() を呼び出します)。私はややパンダの初心者なので、これは些細なことだと思いますが、その方法がわかりません。

4

2 に答える 2

2

日付列のアイテムにTimestampメソッドを適用するだけです。time

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 に答える