2015-09-28 42 views
6

azaltmak Merhaba ben şu dataframePython: Hassas pandalar damgası dataframe

df = 

     Record_ID  Time 
     94704 2014-03-10 07:19:19.647342 
     94705 2014-03-10 07:21:44.479363 
     94706 2014-03-10 07:21:45.479581 
     94707 2014-03-10 07:21:54.481588 
     94708 2014-03-10 07:21:55.481804 

aşağıdaki adres mümkün mü var? Eğer gerçekten datetime microsecond bölümünü kaldırmak gerekiyorsa

df1 = 

     Record_ID  Time 
     94704 2014-03-10 07:19:19 
     94705 2014-03-10 07:21:44 
     94706 2014-03-10 07:21:45 
     94707 2014-03-10 07:21:54 
     94708 2014-03-10 07:21:55 
+0

'datetime' türünde Saat mi? –

+0

Bu sorun mu var? – EdChum

+0

Eğer türünü türetirsem (df.Time [0]) 'pandas.tslib.Timestamp' – emax

cevap

5

, sen 0 ile microsecond bölümünü yerine, seri genelinde uygulamak için Series.apply yöntemiyle birlikte Timestamp.replace yöntemi kullanabilirsiniz. Örnek -

df['Time'] = df['Time'].apply(lambda x: x.replace(microsecond=0)) 

Demo -

In [25]: df 
Out[25]: 
    Record_ID      Time 
0  94704 2014-03-10 07:19:19.647342 
1  94705 2014-03-10 07:21:44.479363 
2  94706 2014-03-10 07:21:45.479581 
3  94707 2014-03-10 07:21:54.481588 
4  94708 2014-03-10 07:21:55.481804 

In [26]: type(df['Time'][0]) 
Out[26]: pandas.tslib.Timestamp 

In [27]: df['Time'] = df['Time'].apply(lambda x: x.replace(microsecond=0)) 

In [28]: df 
Out[28]: 
    Record_ID    Time 
0  94704 2014-03-10 07:19:19 
1  94705 2014-03-10 07:21:44 
2  94706 2014-03-10 07:21:45 
3  94707 2014-03-10 07:21:54 
4  94708 2014-03-10 07:21:55 
+0

Tam olarak aradığım şey bu. – emax

7

Sen yatan NumPy datetime64[ns] değerleri dönüştürebilirsiniz için datetime64[s] değerler:

In [11]: df['Time'] = df['Time'].values.astype('datetime64[s]') 

In [12]: df 
Out[12]: 
    Record_ID    Time 
0  94704 2014-03-10 07:19:19 
1  94705 2014-03-10 07:21:44 
2  94706 2014-03-10 07:21:45 
3  94707 2014-03-10 07:21:54 
4  94708 2014-03-10 07:21:55 

Not bir pandalar DataFrame bir sütuna bu datetime64[s] değerlerini yeniden onları otomatik olarak datetime64[ns]'a dönüştürür, böylece sonuç halaolarak saklanırdeğerleri, ancak astype çağrı, saniyeler kesirli kısmının kaldırılmasına neden olur.

+0

Pandalar sadece 'datetime64 [ns] 'yi destekliyor mu? Kesinliği değiştirmek için bir yol var mı? Sadece tarihler gibi değil mi? – mnky9800n

+1

@ mnky9800n: Şu anda, Pandalar 'NDFrames' sadece 'datetime64 [ns]' yi destekliyor. – unutbu

+0

Diğer zamanları destekleyen bir plan var mı? Datetime64 [ns] aralıklarının yalnızca 600 yıldan uzun sürdüğünden beri bariz nedenler olduğunu düşünüyorum. – mnky9800n