2013-09-01 36 views
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」,它包含隻日期的時間部分(即調用。時間()上的每個值)。我是一個熊貓新手,所以我懷疑這是微不足道的,但我只是沒有看到如何去做。

回答

2

只是apply時間戳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對象的列。

+0

咄更快。謝謝。我知道它與apply()有關,但沒有得到我需要將.time()包裝在lambda中。謝謝。 –

2

使用安迪創建索引的方法比採用

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) 
+0

heh。使用索引在這裏看起來有點奇怪,我想知道是否應該直接從Series訪問特定於時間的DatetimeIndex方法。 –

+0

是的,也許mixin超級索引和系列可能工作 – Jeff

相關問題