Pandas:重设pandas时间戳的时间部分
在本文中,我们将介绍如何使用Python Pandas库重设pandas时间戳的时间部分。
有时候,我们只关心日期而不关心时间,或者只需要时间的某个特定部分,比如小时或分钟。在这种情况下,我们可以通过reset_index()和pandas DatetimeIndex对象中提供的方法来实现时间戳的时间部分的重新设置。以下是一些方法和示例:
阅读更多:Pandas 教程
方法1:将时间部分设置为0
我们可以将时间部分设置为0,以便只保留日期部分。下面的代码演示将数据框中的时间戳的时间部分设置为0:
import pandas as pd
# 创建一个DataFrame,时间戳列名为ts
df = pd.DataFrame({'ts': pd.date_range('20200101', periods=4, freq='H')})
# 将时间戳的时间部分设置为0
df['ts'] = df['ts'].apply(lambda x: x.floor('D'))
结果将是以下内容:
ts
0 2020-01-01
1 2020-01-01
2 2020-01-01
3 2020-01-01
可以看到,时间部分已被设置为0,只保留了日期部分。
方法2:提取时间部分
我们也可以提取时间戳的特定时间部分,比如小时或分钟。以下是一些示例代码:
提取小时部分
# 提取小时部分
df['hour'] = df['ts'].apply(lambda x: x.hour)
结果将是以下内容:
ts hour
0 2020-01-01 0
1 2020-01-01 1
2 2020-01-01 2
3 2020-01-01 3
可以看到,我们已经成功地从时间戳中提取了小时部分。
提取分钟部分
# 提取分钟部分
df['minute'] = df['ts'].apply(lambda x: x.minute)
结果将是以下内容:
ts hour minute
0 2020-01-01 0 0
1 2020-01-01 1 0
2 2020-01-01 2 0
3 2020-01-01 3 0
可以看到,我们已经成功地从时间戳中提取了分钟部分。
方法3:创建DatetimeIndex对象并重新设置
我们还可以使用pandas DatetimeIndex对象来重新设置时间。以下代码演示如何使用DatetimeIndex对象:
# 将时间戳设置为DatetimeIndex
df = df.set_index('ts')
# 重新设置时间为0
df.index = df.index.map(lambda x: x.floor('D'))
结果将是以下内容:
hour minute
ts
2020-01-01 0 0
2020-01-01 1 0
2020-01-01 2 0
2020-01-01 3 0
可以看到,我们使用DatetimeIndex对象重设了时间部分,并成功地将数据框中的时间戳转换为仅包含日期的数据框。
总结
本文介绍了三种方法,通过这些方法我们可以轻松地重设pandas时间戳的时间部分。我们可以将时间部分设置为0以保留日期部分,提取时间戳的特定时间部分,或者使用DatetimeIndex对象重新设置时间。这些方法可以帮助我们更好地处理和分析时间序列数据。