ฉันมี dataframe datetime.datetimeขนาดใหญ่ที่มีหลายคอลัมน์หลายแห่งซึ่งเป็นประเภท ปัญหาคือหลายคนมีประเภทผสมรวมทั้งdatetime.datetimeค่าและค่าเช่นNone(และค่าที่ไม่ถูกต้องอื่น ๆ ):
0 2017-07-06 00:00:00
1 2018-02-27 21:30:05
2 2017-04-12 00:00:00
3 2017-05-21 22:05:00
4 2018-01-22 00:00:00
...
352867 2019-10-04 00:00:00
352868 None
352869 some_string
Name: colx, Length: 352872, dtype: object
จึงส่งผลให้objectคอลัมน์ประเภท df.colx.fillna(pd.NaT)นี้สามารถแก้ไขได้ด้วย ปัญหาคือว่า dataframe ใหญ่เกินกว่าจะค้นหาแต่ละคอลัมน์ได้
อีกวิธีคือการใช้pd.to_datetime(col, errors='coerce')แต่วิธีนี้จะส่งไปยังdatetimeคอลัมน์จำนวนมากที่มีค่าตัวเลข
ฉันสามารถทำได้df.fillna(float('nan'), inplace=True)แม้ว่าคอลัมน์ที่มีวันที่ยังคงเป็นobjectประเภทและจะยังคงมีปัญหาเดียวกัน
สิ่งที่วิธีที่ฉันสามารถปฏิบัติตามเพื่อโยน datetime คอลัมน์เหล่านั้นมีค่าจริงๆมีdatetimeค่า แต่ยังอาจมีNoneและอาจบางค่าไม่ถูกต้อง (กล่าวขวัญตั้งแต่อื่นpd.to_datetimeในtry/ exceptข้อจะทำ)? บางอย่างเช่นเวอร์ชันที่ยืดหยุ่นของpd.to_datetime(col)
Noneในคอลัมน์ของคุณที่เกิดขึ้นจริงNoneแทนหรือสตริงของมันได้หรือไม่
Noneไม่ใช่สตริง อาจเป็นไปได้ว่าอาจมีค่าผิด ๆ ด้วย ... @erfan
datetimeและvaluesอยู่ด้วยได้ไหม
datetime.datetimeหรือpandas._libs.tslibs.timestamps.Timestampไม่ หากคำแนะนำเดิมของฉันจะเปลี่ยนสิ่งที่สร้างวันที่และเวลาเป็นประเภทที่pandasจัดการได้ดีขึ้นเล็กน้อย