如何在 Pandas DataFrame 中将浮点数转换为日期时间?


Pandas 是一个强大的数据操作库,广泛用于 Python 中的数据分析和预处理任务。在处理数据时,经常会遇到日期和时间以浮点数而不是预期的日期时间格式表示的情况。在这种情况下,必须将浮点值转换为日期时间对象才能执行准确的基于时间分析。

本文旨在提供关于如何在 Pandas DataFrame 中将浮点值转换为日期时间对象的全面指南。

了解将浮点数转换为日期时间的重要性

日期时间对象相对于日期和时间的浮点数表示具有几个优点。通过将浮点值转换为日期时间对象,我们可以利用 Pandas 和 Python 提供的丰富的日期时间功能集,包括日期算术、时区处理、重采样和绘图。

此外,将浮点数转换为日期时间允许进行精确的基于时间的比较和计算,从而能够准确地分析和可视化时间序列数据。

以下是两种在 Pandas DataFrame 中将浮点值转换为日期时间的不同方法。

使用 Pandas 的内置函数

请考虑以下代码。

示例

import pandas as pd

# Sample DataFrame with float column representing Unix timestamps
data = {'timestamp': [1620619200.0, 1620705600.0, 1620792000.0]}
df = pd.DataFrame(data)

# Convert float to datetime using Pandas' to_datetime() function
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')

# Print the updated DataFrame
print(df)

解释

  • 我们首先导入所需的库,包括 Pandas。

  • 我们创建一个名为 df 的示例 DataFrame,其中包含一个名为 '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

# Sample DataFrame with float column representing fractional years
data = {'year': [2021.5, 2022.25, 2023.75]}
df = pd.DataFrame(data)

# Custom function to convert fractional years to datetime
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)

# Apply the custom function to the 'year' column
df['year'] = df['year'].apply(convert_to_datetime)

# Print the updated DataFrame
print(df)

解释

  • 在导入所需的库后,我们创建一个名为 df 的示例 DataFrame,其中包含一个名为 '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 在数据操作和转换方面强大的功能和灵活性。根据数据集的具体需求,您可以选择最合适的方法。

更新于: 2023年8月4日

4K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告