Pertanyaan Merencanakan pandas timedelta


Saya memiliki pandas dataframe yang memiliki dua kolom datetime64 dan satu kolom timeedelta64 yang merupakan perbedaan antara dua kolom. Saya mencoba merencanakan histogram dari kolom timedelta untuk memvisualisasikan perbedaan waktu antara dua peristiwa.

Namun, hanya menggunakan df['time_delta'] hasil dalam: TypeError: ufunc add cannot use operands with types dtype('<m8[ns]') and dtype('float64')

Mencoba mengonversi kolom timedelta menjadi: float--> df2 = df1['time_delta'].astype(float)  hasil dalam: TypeError: cannot astype a timedelta from [timedelta64[ns]] to [float64]

Bagaimana cara membuat histogram data pandas timedelta?


25
2018-05-08 13:57


asal


Jawaban:


Berikut ini cara untuk mengonversi timeedeltas, docs are sini

In [2]: pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')
Out[2]: 
0   0 days, 00:00:01
1   1 days, 00:00:01
2   2 days, 00:00:01
3   3 days, 00:00:01
4   4 days, 00:00:01
dtype: timedelta64[ns]

Konversikan ke detik (adalah konversi tepat)

In [3]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[s]')
Out[3]: 
0         1
1     86401
2    172801
3    259201
4    345601
dtype: float64

Mengkonversi menggunakan astype akan membulatkan ke unit itu

In [4]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')).astype('timedelta64[D]')
Out[4]: 
0    0
1    1
2    2
3    3
4    4
dtype: float64

Divisi akan memberikan balasan yang tepat

In [5]: (pd.to_timedelta(np.arange(5),unit='d')+pd.to_timedelta(1,unit='s')) / np.timedelta64(1,'D')
Out[5]: 
0    0.000012
1    1.000012
2    2.000012
3    3.000012
4    4.000012
dtype: float64

33
2018-05-08 14:01