将 Pandas DataFrame 中的列类型从字符串转换为 Datetime 格式2025 年 1 月 9 日 | 阅读 7 分钟 当我们使用 Python 中的 Pandas DataFrame 处理数据时,很常见的情况是会遇到时间序列数据。Pandas 是一个强大的工具,可以处理 Python 中的时间序列数据,并且我们可能需要将给定数据集中的字符串转换为 Datetime 格式。 在本教程中,我们将学习如何将 DataFrame 列中的字符串转换为 "dd/mm/yy" 格式的日期时间。如果日期不是必需的格式,用户将无法对时间序列执行任何基于时间的运算。为了解决这个问题,我们需要将日期转换为所需的日期时间格式。 在 Python 中转换数据类型格式的不同方法在本节中,我们将讨论可以使用的方法来将 Pandas DataFrame 列的数据类型从字符串更改为日期时间。 方法 1:使用 pandas.to_datetime() 函数pandas.to_datetime() 函数是一个多功能工具,可将 DataFrame 列中的字符串转换为日期时间格式。此函数会自动推断日期字符串的格式,或允许您使用 format 参数显式指定格式。 示例 输出 The data is: Date Event Cost 0 12/05/2021 Music- Dance 15400 1 11/21/2018 Poetry- Songs 7000 2 01/12/2020 Theatre- Drama 25000 RangeIndex: 3 entries, 0 to 2 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 3 non-null object 1 Event 3 non-null object 2 Cost 3 non-null int64 dtypes: int64(1), object(2) memory usage: 200.0+ bytes 在这里,我们在输出中可以看到 DataFrame 中“Date”列的数据类型是“object”,这意味着它是字符串。现在,我们将使用“pnd.to_datetime()”函数将数据类型转换为日期时间格式。 输出 The data is: Date Event Cost 0 12/05/2021 Music- Dance 15400 1 11/21/2018 Poetry- Songs 7000 2 01/12/2020 Theatre- Drama 25000 <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 3 non-null datetime64[ns] 1 Event 3 non-null object 2 Cost 3 non-null int64 dtypes: datetime64[ns](1), int64(1), object(1) memory usage: 200.0+ bytes 现在,我们可以看到 DataFrame 中“Data”列的格式已更改为日期时间格式。 方法 2:使用 DataFrame.astype() 函数。DataFrame.astype() 函数可用于将 DataFrame 中的列转换为不同的数据类型,包括 datetime64 格式。但是,此方法不如 pandas.to_datetime() 灵活,因为它要求字符串采用可识别的日期时间格式。 示例 输出 The data is: Date Event Cost 0 12/05/2021 Music- Dance 15400 1 11/21/2018 Poetry- Songs 7000 2 01/12/2020 Theatre- Drama 25000 <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 3 non-null object 1 Event 3 non-null object 2 Cost 3 non-null int64 dtypes: int64(1), object(2) memory usage: 200.0+ bytes 在这里,我们在输出中可以看到 DataFrame 中“Date”列的数据类型是“object”,这意味着它是字符串。现在,我们将使用“Data_Frame.astype()”函数将数据类型转换为日期时间格式。 输出 The data is: Date Event Cost 0 12/05/2021 Music- Dance 15400 1 11/21/2018 Poetry- Songs 7000 2 01/12/2020 Theatre- Drama 25000 <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Date 3 non-null datetime64[ns] 1 Event 3 non-null object 2 Cost 3 non-null int64 dtypes: datetime64[ns](1), int64(1), object(1) memory usage: 200.0+ bytes 现在,我们可以看到通过使用 data_frame['Date'].astype('datetime64[ns]'),DataFrame 中“Data”列的格式已更改为日期时间格式。 方法 3假设 DataFrame 列中有一个 "yymmdd" 格式的日期,我们需要将其从字符串转换为日期时间格式。 示例 输出 The data is: Date Patient Number 0 210302 67000 1 210901 62000 2 210706 61900 3 210402 59000 4 210802 74000 5 210804 54050 6 210109 57650 7 210509 67300 8 210209 76600 Date object Patient Number int64 dtype: object 在这里,我们在输出中可以看到 DataFrame 中“Date”列的数据类型是“object”,这意味着它是字符串。现在,我们将使用“data_frame['Date'] = pnd.to_datetime(data_frame['Date'], format = '%y%m%d')”函数将数据类型转换为日期时间格式。 输出 The data is: Date Patient Number 0 210302 67000 1 210901 62000 2 210706 61900 3 210402 59000 4 210802 74000 5 210804 54050 6 210109 57650 7 210509 67300 8 210209 76600 Date datetime64[ns] Patient Number int64 dtype: object 在上面的代码中,我们使用“pnd.to_datetime(data_frame['Date'], format = '%y%m%d')”函数将“Date”列的数据类型从“object”更改为“datetime64[ns]”。 方法 4我们可以使用“pandas.to_datetime()”函数将多个列从“string”转换为“datetime”格式,即“YYYYMMDD”格式。 输出 The data is: Treatment_starting_Date Patients Number Treatment_ending_Date 0 20210612 54000 20210812 1 20210814 65000 20210614 2 20210316 71500 20210316 3 20210519 45000 20210119 4 20210221 98000 20210221 5 20210124 23000 20210724 6 20210929 12000 20210924 Treatment_starting_Date object Patients Number int64 Treatment_ending_Date object dtype: object 在这里,我们在输出中可以看到 DataFrame 中“Date”列的数据类型是“object”,这意味着它是字符串。现在,我们将使用“pnd.to_datetime(data_frame[''], format = '%y%m%d')”函数将“Date”列的数据类型转换为日期时间格式。 输出 The data is: Treatment_starting_Date Patients Number Treatment_ending_Date 0 20210612 54000 20210812 1 20210814 65000 20210614 2 20210316 71500 20210316 3 20210519 45000 20210119 4 20210221 98000 20210221 5 20210124 23000 20210724 6 20210929 12000 20210924 Treatment_starting_Date datetime64[ns] Patients Number int64 Treatment_ending_Date datetime64[ns] dtype: object 在上面的输出中,我们可以看到“Treatment_starting_Date”和“Treatment_ending_Date”的数据类型已通过使用“pnd.to_datetime()”函数更改为日期时间格式。 结论在本教程中,我们学习了在 Python 中将 Pandas DataFrame 的列类型从字符串转换为日期时间的各种方法。 |
我们请求您订阅我们的新闻通讯以获取最新更新。