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

标签 python python-3.x pandas datetime

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

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

我也尝试过这个。

df_all_files['the_date'] = df_all_files['string'].astype('datetime64[ns]')

一旦遇到非日期,就会出现此错误。

ValueError: ('Unknown string format:', 'ach1')

最佳答案

使用 pd.to_datetime 将您的系列转换为 datetime首先,使用errors='coerce'确保不可转换的值被 NaN 替换:

df_all_files['the_date'] = pd.to_datetime(df_all_files['the_date'], errors='coerce').dt.date

但是,我强烈建议您避免转换为 dt.date因为这会将您的系列转换为 object dtype系列datetime.date对象,而不是高效的 Pandas datetime系列。

以下是使用 Python 引起的问题的 4 个示例 datetime.datedatetime.datetime带有 Pandas 的对象:

  1. TypeError: Cannot compare type 'Timestamp' with type 'date'
  2. Parse a Pandas column to Datetime
  3. Why my code didn't select data from Pandas dataframe?
  4. Filtering pandas dataframe by day

关于python - 将字符串转换为日期并删除数据框一列中的非日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54100778/

相关文章:

python - 如何根据列和数组中存在的数据填充值? Pandas

如果互联网连接中断,python + parse.com 上传数据

python - 使用 SQLAlchemy 获取页面的特定数量的结果

python - 从列表中删除方括号 [](同时使用键排序)

python - 将字符列编码为序数,但保持数字列相同

python - 将 NaN 添加到 pandas 系列时,保留 bool 和 float 之间的区别?

python - 根据索引从数据框中删除某些行

python - 如何在不删除 Python 中的分隔符的情况下拆分具有多个分隔符的字符串?

python - 从多份 PDF 格式的简历中提取信息

python - 将 pandas DataFrame 中的行与另一个文本连接起来