Pandas: cara menghitung selisih dua kali


Anda dapat menggunakan sintaks berikut untuk menghitung perbedaan antara dua kali dalam pandas DataFrame:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

Contoh khusus ini menghitung perbedaan antara waktu di kolom end_time dan start_time dari beberapa Pandas DataFrame.

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh: menghitung selisih dua waktu pada panda

Misalkan kita memiliki panda DataFrame berikut:

 import pandas as pd

#createDataFrame
df=pd. DataFrame ({' start_time ':pd. date_range (start=' 5/25/2020 ', periods= 6 , freq=' 15min '),
                 ' end_time ':pd. date_range (start=' 5/26/2020 ', periods= 6 , freq=' 30min ')})

#view DataFrame
print (df)

           start_time end_time
0 2020-05-25 00:00:00 2020-05-26 00:00:00
1 2020-05-25 00:15:00 2020-05-26 00:30:00
2 2020-05-25 00:30:00 2020-05-26 01:00:00
3 2020-05-25 00:45:00 2020-05-26 01:30:00
4 2020-05-25 01:00:00 2020-05-26 02:00:00
5 2020-05-25 01:15:00 2020-05-26 02:30:00

Kita dapat menggunakan sintaks berikut untuk menghitung perbedaan waktu antara kolom start_time dan end_time dalam satuan jam, menit, dan detik:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

#view updated DataFrame
print (df)

           start_time end_time hours_diff min_diff sec_diff
0 2020-05-25 00:00:00 2020-05-26 00:00:00 24.00 1440.0 86400.0
1 2020-05-25 00:15:00 2020-05-26 00:30:00 24.25 1455.0 87300.0
2 2020-05-25 00:30:00 2020-05-26 01:00:00 24.50 1470.0 88200.0
3 2020-05-25 00:45:00 2020-05-26 01:30:00 24.75 1485.0 89100.0
4 2020-05-25 01:00:00 2020-05-26 02:00:00 25.00 1500.0 90000.0
5 2020-05-25 01:15:00 2020-05-26 02:30:00 25.25 1515.0 90900.0

Kolom baru berisi perbedaan waktu antara kolom start_time dan end_time dalam satuan yang berbeda.

Misalnya, perhatikan baris pertama:

  • Perbedaan antara waktu mulai dan waktu berakhir adalah 24 jam .
  • Selisih waktu mulai dan waktu berakhir adalah 1440 menit .
  • Selisih antara waktu mulai dan waktu berakhir adalah 86.400 detik .

Perhatikan bahwa dalam contoh ini, kolom start_time dan end_time sudah diformat sebagai datetime.

Jika kolom waktu Anda saat ini diformat sebagai string, Anda dapat menggunakan pd.to_datetime untuk terlebih dahulu mengonversi setiap kolom ke format datetime sebelum menghitung selisih waktu:

 #convert columns to datetime format
df[[' start_time ', ' end_time ']] = df[[' start_time ', ' end_time ]]. apply (pd. to_datetime )

Anda kemudian dapat melanjutkan untuk menghitung perbedaan waktu antar kolom karena keduanya sekarang dalam format tanggal-waktu yang dapat dikenali oleh panda.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Cara membuat rentang tanggal di Pandas
Cara mengekstrak bulan dari tanggal di Pandas
Bagaimana cara mengubah stempel waktu menjadi tanggal/waktu di Pandas

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *