Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字符串转换为日期,并删除数据框一列中的非日期_Python_Python 3.x_Pandas_Datetime - Fatal编程技术网

Python 将字符串转换为日期,并删除数据框一列中的非日期

Python 将字符串转换为日期,并删除数据框一列中的非日期,python,python-3.x,pandas,datetime,Python,Python 3.x,Pandas,Datetime,我有一个数据框,我从一列拆分成两列,如下所示 df_all_files = pd.DataFrame(df_all_files.string.str.split('.',1).tolist(), columns = ['string','the_date']) 这给了我一堆文件扩展名和一堆日期,都在同一列中。我想强制任何看起来可能是日期的东西变成实际日期,并删除任何不是日期的东西。这可行吗 这是我的样品

我有一个数据框,我从一列拆分成两列,如下所示

df_all_files = pd.DataFrame(df_all_files.string.str.split('.',1).tolist(), columns = ['string','the_date'])
这给了我一堆文件扩展名和一堆日期,都在同一列中。我想强制任何看起来可能是日期的东西变成实际日期,并删除任何不是日期的东西。这可行吗

这是我的样品

                                                                     string     the_date

-rw-r--r--   64 30067    10224         616 Nov 01 17:46 ASEJPN_ModelHolidays    20181101
-rw-r--r--   64 30067    10224         616 Dec 03 19:23 ASEJPN_ModelHolidays    20181201
-rw-r--r--   74 30067    10224        4938 Oct 04 03:28 AS1181003               RATE
这就是我想要的

                                                                     string     the_date

-rw-r--r--   64 30067    10224         616 Nov 01 17:46 ASEJPN_ModelHolidays    20181101
-rw-r--r--   64 30067    10224         616 Dec 03 19:23 ASEJPN_ModelHolidays    20181201
-rw-r--r--   74 30067    10224        4938 Oct 04 03:28 AS1181003               181003
现在,我在经营这条航线

df_all_files['the_date'] = df_all_files['the_date'].dt.date
我得到了这个错误

AttributeError: Can only use .dt accessor with datetimelike values
ValueError: ('Unknown string format:', 'ach1')
我也试过这个

df_all_files['the_date'] = df_all_files['string'].astype('datetime64[ns]')
一旦它遇到非日期,它就会给我这个错误

AttributeError: Can only use .dt accessor with datetimelike values
ValueError: ('Unknown string format:', 'ach1')
用于首先将序列转换为
datetime
,使用
errors='concurve'
确保将不可转换的值替换为
NaN

df_all_files['the_date'] = pd.to_datetime(df_all_files['the_date'], errors='coerce').dt.date
但是,我强烈建议您避免转换为
dt.date
,因为这会将序列转换为
datetime.date
对象的
dtype序列,而不是有效的
datetime
序列

下面是使用Python
datetime.date
datetime.datetime
对象与Pandas一起使用时导致的4个问题示例:


  • 哦,老兄,我喜欢这个!!这正是我想要的!!非常感谢!!我还有一个问题。在我最初的帖子中,一些日期在最后一个“”字符之后,因此我提出了一个行程序:df_all_files=pd.DataFrame(df_all_files.string.str.rsplit(“”,1.tolist(),columns=['string','the_date']),它将“\u”字符之后的日期解析到下一列,但它会覆盖该列中的任何日期。我怎样才能将三个日期移到名为“the_dates”(190103、190104和190107)的列中,而跳过“CountryHolidays”,因为“the_dates”列中已经有实际日期了?@ryguy72,对不起,我无法理解这个问题。我建议你发布一个新问题,上面有你尝试过的内容。