2016-03-31 6 views
1

Hücrelerin zaman damgalarından birini farklı bir zaman damgasına değiştirmeye çalıştığım bir panda DataFrame'im var. Ancak, beklediğim sonucu alamıyorum. İşte ne var: örnek göstermektedirpandas: hücrede zaman damgasının değiştirilmesi yanlış değerde sonuç veriyor

>>> df = pd.DataFrame({"d": [np.datetime64('2013-07-14T10:30:30.521Z'), np.datetime64('2013-07-21T10:30:30.521Z')]}) 
>>> df 
          d 
0 2013-07-14 10:30:30.521000 
1 2013-07-21 10:30:30.521000 
>>> df.iloc[-1, df.columns.get_loc("d")] = np.datetime64('2013-08-29T10:30:30.521Z') 
>>> df 
           d 
0 2013-07-14 10:30:30.521000 
1 1970-01-01 00:22:57.772230521 

olarak, df.loc[1, "d"] için olsun damgası ben o hücreye atama ediyorum biri değil. Bu davranışımı ya da yanlış gittiğim yeri anlamıyorum. Bir zaman damgasının değerini değiştirmem için başka bir yol var mı?

Düzenle: yukarıdaki örnek basit bir örnektir. Benim gerçek df sadece 1 değil, birçok sütun var. Ben pandas sürüm 0.16.1 kullanıyorum (ve sürümü değiştiremezsiniz).

+0

Sizin örnek kod çalışır benim için. Hangi panda/numpy versiyonlarını kullanıyorsunuz? – root

cevap

1

sizin df yalnızca bir sütun beri bu şekilde yapabilirsiniz:

In [29]: df 
Out[29]: 
         d 
0 2013-07-14 10:30:30.521 
1 2013-07-21 10:30:30.521 

In [30]: df.iloc[-1] = pd.to_datetime('2013-08-29T10:30:30.521Z') 

In [31]: df 
Out[31]: 
         d 
0 2013-07-14 10:30:30.521 
1 2013-08-29 10:30:30.521 

GÜNCELLEME: Eğer df birden çok sütun varsa: beklendiği gibi

In [47]: df 
Out[47]: 
         d a 
0 2013-07-14 10:30:30.521 1 
1 2013-07-21 10:30:30.521 1 

In [48]: df.loc[df.index[-1], 'd'] = pd.to_datetime('2013-08-29T10:30:30.521Z') 

In [49]: df 
Out[49]: 
         d a 
0 2013-07-14 10:30:30.521 1 
1 2013-08-29 10:30:30.521 1 
+0

Üzgünüm - Açıklığa kavuşmuş olmalıydım. Yukarıdaki sadece basit bir örnektir; benim gerçek df'm çok daha fazla sütun var. – LateCoder

+0

@LateCoder, cevabımı güncelledim - lütfen bana – MaxU

+0

kontrol edin. Bu hala yanlış zaman damgasını veriyor. Muhtemelen panda versiyonumla ilgisi var - ama bunu değiştiremiyorum. – LateCoder