Pandas 是否从现有数据框列创建新的数据框列?

Pandas 是否从现有数据框列创建新的数据框列?,pandas,Pandas,我用的是熊猫0.12.0。我有一个数据框,看起来像: 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”,它只包含日期的时间部分

我用的是熊猫0.12.0。我有一个数据框,看起来像:

                 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”,它只包含日期的时间部分(即每个值的call.time())。我有点像熊猫新手,所以我怀疑这很琐碎,但我只是不知道怎么做。

只是日期列中项目的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
对象。

仅时间戳
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
对象。

使用Andy在索引上创建的方法比应用更快

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)

使用Andy在索引上创建的方法比应用更快

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)

嗯。谢谢我知道它与apply()有关,但我不知道我需要将.time()封装在lambda中。谢谢。谢谢我知道它与apply()有关,但我不知道我需要将.time()封装在lambda中。谢谢。在这里使用索引确实有点奇怪,我想知道是否应该是一种直接从Series.heh访问特定于时间的DatetimeIndex方法的方法。在这里使用索引确实有点奇怪,我想知道是否应该是一种直接从序列中访问特定于时间的DatetimeIndex方法的方法。