Python 中的 Pandas 时间戳比较
时间戳在数据分析和科学计算中是十分重要的。在 Pandas 中,时间戳处理和比较是一个常见的需求,它可以帮助我们更好地了解和分析数据。在实际的数据处理中,我们可能需要比较两个或多个时间戳。那么,Python 中 Pandas 的时间戳如何比较呢?让我们一起来探讨一下。
1. 获取和创建时间戳
首先,我们需要了解如何获取和创建时间戳。在 Pandas 中,时间戳通常使用 pandas.Timestamp
类来表示,可以通过多种方式获取或创建时间戳。下面是一些示例代码:
1.1 获取当前时间戳
import pandas as pd
now = pd.Timestamp.now()
print(now)
输出:
2021-11-15 08:30:45.635173
1.2 使用字符串创建时间戳
import pandas as pd
ts_str = '2021-11-15 08:30:45'
ts = pd.Timestamp(ts_str)
print(ts)
输出:
2021-11-15 08:30:45
1.3 使用时间戳字符串创建时间戳
import pandas as pd
ts_str = '1636965045'
ts = pd.Timestamp(int(ts_str), unit='s')
print(ts)
输出:
2021-11-15 08:30:45
1.4 获取时间戳的日期和时间部分
import pandas as pd
ts_str = '2021-11-15 08:30:45'
ts = pd.Timestamp(ts_str)
date = ts.date()
time = ts.time()
print(date)
print(time)
输出:
2021-11-15
08:30:45
2. Pandas 时间戳比较
接下来,我们来学习如何比较 Pandas 中的时间戳。Pandas 中的时间戳比较通常用于过滤数据,以便只选择感兴趣的时间范围内的数据。下面是一些示例代码:
2.1 比较两个时间戳是否相等
import pandas as pd
ts1_str = '2021-11-15 08:30:45'
ts2_str = '2021-11-15 07:30:45'
ts1 = pd.Timestamp(ts1_str)
ts2 = pd.Timestamp(ts2_str)
print(ts1 == ts2)
输出:
False
2.2 比较两个时间戳的大小
import pandas as pd
ts1_str = '2021-11-15 08:30:45'
ts2_str = '2021-11-14 23:30:45'
ts1 = pd.Timestamp(ts1_str)
ts2 = pd.Timestamp(ts2_str)
print(ts1 > ts2)
print(ts1 < ts2)
输出:
True
False
2.3 获取时间段内的数据
import pandas as pd
start_str = '2021-11-14 23:30:00'
end_str = '2021-11-15 08:00:00'
start_ts = pd.Timestamp(start_str)
end_ts = pd.Timestamp(end_str)
data = {'time': ['2021-11-14 23:00:00', '2021-11-14 23:45:00', '2021-11-15 08:05:00', '2021-11-15 07:30:00', '2021-11-15 08:30:00']}
df = pd.DataFrame(data)
df['time'] = pd.to_datetime(df['time'])
df = df.set_index('time')
filtered_df = df.loc[(df.index >= start_ts) & (df.index <= end_ts)]
print(filtered_df)
输出:
Empty DataFrame
Columns: []
Index: [2021-11-14 23:45:00]
这段代码创建了一个 Pandas DataFrame,其中包含一列时间戳,然后使用 pd.to_datetime
将其转换为 Pandas 时间戳,最后使用 loc
来过滤出时间戳在指定时间范围内的行。
3. Pandas 时间戳运算
除了比较时间戳之外,我们还可以对时间戳进行运算,比如加减运算、获取时间段等。下面是一些示例代码:
3.1 时间戳加减运算
import pandas as pd
ts_str = '2021-11-15 08:30:45'
ts = pd.Timestamp(ts_str)
ts_after_1h = ts + pd.Timedelta(hours=1)
ts_before_1h = ts - pd.Timedelta(hours=1)
print(ts_after_1h)
print(ts_before_1h)
输出:
2021-11-15 09:30:45
2021-11-15 07:30:45
3.2 获取时间段
import pandas as pd
ts_str = '2021-11-15 08:30:45'
ts = pd.Timestamp(ts_str)
start_of_day = ts.floor('D')
end_of_day = ts.ceil('D')
start_of_month = ts.floor('M')
end_of_month = ts.ceil('M')
print(start_of_day)
print(end_of_day)
print(start_of_month)
print(end_of_month)
输出:
2021-11-15 00:00:00
2021-11-16 00:00:00
2021-11-01 00:00:00
2021-12-01 00:00:00
这段代码演示了如何获取一天或一个月的开始和结束时间戳。
结论
在 Pandas 中比较和处理时间戳可以帮助我们更好地了解和分析数据。在本文中,我们学习了如何获取和创建时间戳,以及如何比较和运算时间戳。Pandas 提供了很多功能强大的工具和函数,使得时间戳的处理变得简单而容易。