ฉันต้องการสร้างคอลัมน์ในกรอบข้อมูลแพนด้าที่เป็นตัวแทนจำนวนเต็มของจำนวนวันในคอลัมน์ไทม์เดลตา เป็นไปได้ไหมที่จะใช้ '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หรือยัง?