Pandas:如何向日期时间添加/减去时间
您可以使用以下基本语法在 pandas 中的日期/时间中添加或减去时间:
#add time to datetime df[' new_datetime '] = df[' my_datetime '] + pd. Timedelta (hours= 5 , minutes= 10 , seconds= 3 ) #subtract time from datetime df[' new_datetime '] = df[' my_datetime '] - pd. Timedelta (hours= 5 , minutes= 10 , seconds= 3 )
以下示例展示了如何在实践中使用此语法。
示例:Pandas 中的日期时间加/减时间
假设我们有以下 pandas DataFrame,它显示商店在 10 个不同日期和时间的销售额:
import pandas as pd #createDataFrame df = pd. DataFrame ({' time ': pd.date_range (' 2022-01-01 ', periods= 10 ), ' sales ': [14, 22, 25, 29, 31, 10, 12, 8, 22, 25]}) #view DataFrame print (df) time sales 0 2022-01-01 14 1 2022-01-02 22 2 2022-01-03 25 3 2022-01-04 29 4 2022-01-05 31 5 2022-01-06 10 6 2022-01-07 12 7 2022-01-08 8 8 2022-01-09 22 9 2022-01-10 25
我们可以使用 pandas Timedelta函数为“时间”列中的每个日期时间值添加 5 小时、10 分钟和 3 秒:
#create new column that contains time + 5 hours, 10 minutes, 3 seconds
df[' time_plus_some '] = df[' time '] + pd. Timedelta (hours= 5 , minutes= 10 , seconds= 3 )
#view updated DataFrame
print (df)
time sales time_plus_some
0 2022-01-01 14 2022-01-01 05:10:03
1 2022-01-02 22 2022-01-02 05:10:03
2 2022-01-03 25 2022-01-03 05:10:03
3 2022-01-04 29 2022-01-04 05:10:03
4 2022-01-05 31 2022-01-05 05:10:03
5 2022-01-06 10 2022-01-06 05:10:03
6 2022-01-07 12 2022-01-07 05:10:03
7 2022-01-08 8 2022-01-08 05:10:03
8 2022-01-09 22 2022-01-09 05:10:03
9 2022-01-10 25 2022-01-10 05:10:03
我们可以轻松地创建一个新列,从“时间”列中的每个日期时间值减去 5 小时、10 分钟和 3 秒:
#create new column that contains time - 5 hours, 10 minutes, 3 seconds
df[' time_minus_some '] = df[' time '] - pd. Timedelta (hours= 5 , minutes= 10 , seconds= 3 )
#view updated DataFrame
print (df)
time sales time_minus_some
0 2022-01-01 14 2021-12-31 18:49:57
1 2022-01-02 22 2022-01-01 18:49:57
2 2022-01-03 25 2022-01-02 18:49:57
3 2022-01-04 29 2022-01-03 18:49:57
4 2022-01-05 31 2022-01-04 18:49:57
5 2022-01-06 10 2022-01-05 18:49:57
6 2022-01-07 12 2022-01-06 18:49:57
7 2022-01-08 8 2022-01-07 18:49:57
8 2022-01-09 22 2022-01-08 18:49:57
9 2022-01-10 25 2022-01-09 18:49:57
注意#1 :在这些示例中,我们使用了特定的小时数、分钟数和秒数,但如果您愿意,您也可以仅使用其中一个单位。例如,您可以指定pd.Timedelta(hours=5)来简单地将 5 小时添加到日期时间值。
注意#2 :您可以在此处找到 pandas Timedelta函数的完整文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
如何将 Pandas 中的 Timedelta 转换为 Int
如何将 Pandas 中的日期时间转换为字符串
如何在 Pandas 中将时间戳转换为日期/时间
如何在 Pandas 中根据年、月、日创建日期列