Selamat malam,

Apakah mungkin untuk menghitung dengan - katakanlah - dua kolom di dalam kerangka data dan tambahkan kolom ketiga dengan hasil yang pas?

Kerangka data (asli):

name        time_a      time_b
name_a      08:00:00    09:00:00
name_b      07:45:00    08:15:00
name_c      07:00:00    08:10:00
name_d      06:00:00    10:00:00

Atau untuk lebih spesifik ... apakah mungkin untuk mendapatkan perbedaan dua kali (time_b - time_a) dan membuat kolom baru (time_c) di akhir kerangka data?

Kerangka data (baru):

name        time_a      time_b      time_c
name_a      08:00:00    09:00:00    01:00:00
name_b      07:45:00    08:15:00    00:30:00
name_c      07:00:00    08:10:00    01:10:00
name_d      06:00:00    10:00:00    04:00:00

Terima kasih dan selamat malam!

0
finethen 23 April 2020, 00:32

1 menjawab

Jawaban Terbaik

Jika kolom Anda dalam format datetime atau timedelta:

# New column is a timedelta object
df["time_c"] = (df["time_b"] - df["time_a"])

Jika kolom Anda dalam format datetime.time (seperti yang terlihat):

def time_diff(time_1,time_2):
  """returns the difference between time 1 and time 2 (time_2-time_1)"""
  now = datetime.datetime.now()
  time_1 = datetime.datetime.combine(now,time_1)
  time_2 = datetime.datetime.combine(now,time_2)
  return time_2 - time_1

# Apply the function
df["time_c"] = df[["time_a","time_b"]].apply(lambda arr: time_diff(*arr), axis=1)

Atau, Anda dapat mengonversi ke timedelta dengan terlebih dahulu mengonversi ke string:

df["time_a"]=pd.to_timedelta(df["time_a"].astype(str))
df["time_b"]=pd.to_timedelta(df["time_b"].astype(str))
df["time_c"] = df["time_b"] - df["time_a"]
1
Yaakov Bressler 23 April 2020, 20:26