如何在 Pandas DataFrame 中将浮点数转换为日期时间?
Pandas 是一个功能强大的数据操作库,广泛用于 Python 的数据分析和预处理任务。处理数据时,经常会遇到日期和时间以浮点数而不是预期的日期时间格式表示的情况。在这种情况下,将浮点值转换为日期时间对象以执行准确的基于时间的分析至关重要。
本文旨在提供有关如何在 Pandas DataFrame 中将浮点值转换为日期时间对象的全面指南。
了解将浮点数转换为日期时间的重要性
与日期和时间的浮点表示相比,日期时间对象具有多种优势。通过将浮点值转换为日期时间对象,我们可以利用 Pandas 和 Python 提供的丰富的日期时间功能,包括日期运算、时区处理、重采样和绘图。
此外,将浮点数转换为日期时间可以进行精确的基于时间的比较和计算,从而实现时间序列数据的准确分析和可视化。
以下是在 Pandas DataFrame 中将浮点值转换为日期时间的两种不同方法。
使用 Pandas 的内置函数
考虑下面显示的代码。
示例
import pandas as pd # 示例 DataFrame 带有表示 Unix 时间戳的浮点列 data = {'timestamp': [1620619200.0, 1620705600.0, 1620792000.0]} df = pd.DataFrame(data) # 使用 Pandas 的 to_datetime() 函数将浮点转换为日期时间 df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s') # 打印更新的 DataFrame print(df)
说明
我们首先导入所需的库,包括Pandas。
我们创建一个示例 DataFrame df,其中有一个名为"timestamp"的列,其中包含表示 Unix 时间戳的浮点值。
使用 pd.to_datetime() 函数,我们将"timestamp"列转换为日期时间格式。unit='s' 参数指定浮点值表示以秒为单位的时间戳。如果浮点值以毫秒为单位,则可以使用 unit='ms'。
原始"timestamp"列被转换后的日期时间值替换。
最后,我们打印更新的 DataFrame,显示转换结果。
输出
timestamp 0 2021-05-10 04:00:00 1 2021-05-11 04:00:00 2 2021-05-12 04:00:00
使用自定义函数
考虑下面显示的代码。
示例
import pandas as pd # 带有表示小数年份的浮点列的示例 DataFrame data = {'year': [2021.5, 2022.25, 2023.75]} df = pd.DataFrame(data) # 将小数年份转换为日期时间的自定义函数 def convert_to_datetime(year): year = int(year) days = int((year - int(year)) * 365.25) base_date = pd.to_datetime(f'{year}-01-01') return base_date + pd.DateOffset(days=days) # 将自定义函数应用于"year"列 df['year'] = df['year'].apply(convert_to_datetime) # 打印更新的 DataFrame print(df)
说明
导入所需的库后,我们创建一个示例 DataFrame df,其中有一个名为"year"的列,其中包含表示小数年份的浮点值。
我们定义一个自定义函数 convert_to_datetime(year),将小数年份转换为日期时间对象。
在自定义函数中,我们将浮点值转换为表示年份的整数,并计算与年份小数部分对应的天数。
我们使用 pd.to_datetime() 创建基准日期,并将年份指定为 1 月 1 日。
通过使用 pd.DateOffset() 添加计算出的天数,我们获得最终的日期时间值。
我们使用apply()函数将自定义函数应用于"year"列。
"year"列使用转换后的日期时间值进行更新。
最后,我们打印更新后的DataFrame以显示转换结果。
输出
year 0 2021-01-01 1 2022-01-01 2 2023-01-01
结论
总之,在处理与时间相关的数据时,将 Pandas DataFrame 中的浮点值转换为日期时间是一项常见任务。在本文中,我们探讨了两种不同的方法来完成此任务。
第一种方法利用 Pandas 的内置功能,特别是 pd.to_datetime() 函数。
第二种方法演示了一个自定义函数来处理更具体的场景。在本例中,我们解决了将小数年份转换为日期时间对象的问题。
这两种方法都展示了 Pandas 在数据操作和转换方面的强大功能和灵活性。根据数据集的具体要求,您可以选择最合适的方法。