Python: timedelta'yı bir veri çerçevesinde int'e dönüştür


111

Pandas veri çerçevesinde bir timedelta sütunundaki gün sayısının tamsayı olarak temsil edildiği bir sütun oluşturmak istiyorum. 'Datetime.days' kullanmak mümkün mü yoksa daha manuel bir şey yapmam gerekiyor mu?

timedelta sütunu

7 gün, 23:29:00

gün tamsayı sütunu

7


12
Kullanmayı denedin timedelta.daysmi
Ffisegydd

Yanıtlar:


162

dt.daysÖzniteliği kullanın . Bu özelliğe şu yolla erişin:

timedelta_series.dt.days

Aynı şekilde secondsve microsecondsniteliklerini de alabilirsiniz .


11
Bu yorumu basit olması ve başka bir kütüphanenin içe aktarılmasını gerektirmemesi için seviyorum.
NickBraunagel

68

Bunu yapabilirsiniz td, timedeltas seriniz nerede . Bölme, nanosaniye deltalarını gün deltalarına dönüştürür ve int'e dönüşüm tam günlere düşer.

import numpy as np

(td / np.timedelta64(1, 'D')).astype(int)

1
Teşekkürler! Ayrıca 15 dakika daha araştırdıktan sonra bunu buldum. stackoverflow.com/questions/18215317/…
Asaf Hanish

ve /arasında ne var ? tdnp
Jason Goal

Timedelta64 bölümü operatörü. Td'nin 1 günlük bir delta ile bölünmesi, td cinsinden temsil edilen (muhtemelen kesirli) gün sayısı ile sonuçlanır. Bu durumda gerekli değil, ancak
David Waterworth

22

Timedelta nesneler var salt okunur örnek nitelikleri .days, .secondsve .microseconds.


6

Soru yalnızca "timedelta'nın tam sayı biçimine nasıl erişilir?" ancak "veri çerçevesindeki timedelta sütunu int türüne nasıl dönüştürülür?" cevap biraz farklı olabilir. Ek olarak .dt.dayserişgeç sen gerekmez ya df.astypeyapd.to_numeric

Bu seçeneklerden herhangi biri yardımcı olmalıdır:

df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')

veya

df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')

Merhaba, bunu denedim ama ValueError aldım: Sonlu olmayan değerleri (NA veya inf) tam sayıya çeviremiyorum çünkü pandalar serisinde nans var. Bunu kimin çözeceğini biliyor musun ???
Pablito

İkinci seçenek benim için çalıştı ve tarih değerleri türdeydi timedelta64[ns]. Tarihleriniz NaN ise, önce pandalar to_datetimeişlevini kullanarak bunları tarih saatine dönüştürün , ardından yukarıdaki ikinci seçeneği kullanın. Daha fazla ayrıntı için to_datetime
Onen simon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.