ฉันต้องการสร้างคอลัมน์ในกรอบข้อมูลแพนด้าที่เป็นตัวแทนจำนวนเต็มของจำนวนวันในคอลัมน์ไทม์เดลตา เป็นไปได้ไหมที่จะใช้ 'datetime.days' หรือฉันต้องทำอะไรเพิ่มเติมด้วยตนเอง?
คอลัมน์เวลา
7 วัน 23:29:00 น
คอลัมน์จำนวนเต็มวัน
7
ฉันต้องการสร้างคอลัมน์ในกรอบข้อมูลแพนด้าที่เป็นตัวแทนจำนวนเต็มของจำนวนวันในคอลัมน์ไทม์เดลตา เป็นไปได้ไหมที่จะใช้ 'datetime.days' หรือฉันต้องทำอะไรเพิ่มเติมด้วยตนเอง?
คอลัมน์เวลา
7 วัน 23:29:00 น
คอลัมน์จำนวนเต็มวัน
7
คำตอบ:
ใช้dt.days
แอตทริบิวต์ เข้าถึงแอตทริบิวต์นี้ผ่าน:
timedelta_series.dt.days
คุณยังสามารถรับseconds
และmicroseconds
แอตทริบิวต์ในลักษณะเดียวกัน
คุณสามารถทำได้td
ชุดเวลาของคุณอยู่ที่ไหน การหารจะแปลงเดลต้านาโนวินาทีเป็นเดลต้าวันและการแปลงเป็น int จะลดลงเป็นทั้งวัน
import numpy as np
(td / np.timedelta64(1, 'D')).astype(int)
/
ระหว่างtd
และnp
?
วัตถุ timedelta ได้อ่านอย่างเดียวคุณลักษณะเช่น.days
, และ.seconds
.microseconds
หากคำถามไม่ใช่แค่ "วิธีเข้าถึงรูปแบบจำนวนเต็มของไทม์เดลตา" แต่ "จะแปลงคอลัมน์ timedelta ใน dataframe เป็น int ได้อย่างไร" คำตอบอาจแตกต่างกันเล็กน้อย นอกจาก.dt.days
อุปกรณ์ที่คุณต้องการdf.astype
หรือpd.to_numeric
ตัวเลือกเหล่านี้ควรช่วย:
df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')
หรือ
df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')
timedelta64[ns]
ตัวเลือกที่สองทำงานสำหรับฉันและค่าวันที่เป็นประเภท หากวันที่ของคุณเป็น NaN ก่อนอื่นให้แปลงเป็นวันที่และเวลาโดยใช้to_datetime
ฟังก์ชันแพนด้าจากนั้นใช้ตัวเลือกที่สองด้านบน สำหรับรายละเอียดเพิ่มเติม checkout to_datetime
timedelta.days
หรือยัง?