龙空技术网

软件测试|数据处理神器pandas教程(十)

测试者穆勒 179

前言:

眼前咱们对“pythonpandas减法”大体比较看重,各位老铁们都想要学习一些“pythonpandas减法”的相关文章。那么小编在网摘上搜集了一些对于“pythonpandas减法””的相关内容,希望我们能喜欢,我们快快来学习一下吧!

前言

之前我们介绍了pandas处理时间以及pandas时间序列的内容,本文我们来介绍pandas处理时间差的有关操作。

Timedelta 表示时间差(或者时间增量),我们可以使用不同的时间单位来表示它,比如,天、小时、分、秒。时间差的最终的结果可以是正时间差,也可以是负时间差。

本文主要介绍创建 Timedelta (时间差)的方法以及与时间差相关的运算法则。

创建时间差对象通过传递字符串可以创建 Timedelta 对象,示例如下:

import pandas as pdprint(pd.Timedelta('5 days 23 hours 50 minutes 23 seconds'))------------------------输出结果如下:5 days 23:50:23
传递整数值和unit参数也可以创建一个 Timedelta 对象,示例如下:
import pandas as pdprint(pd.Timedelta(7,unit='h'))--------------------------输出结果如下:0 days 07:00:00
数据偏移量,周(weeks)、天(days)、小时(hours)、分钟(minutes)、秒(milliseconds)、毫秒、微秒、纳秒都可以使用,示例如下:
import pandas as pdprint (pd.Timedelta(weeks=1,days=2,hours=6))------------------------------输出结果如下:9 days 06:00:00

注:周会直接换算成天数,与天数相加,该方法不支持月份作为数据偏移量

to_timedelta()

使用pd.to_timedelta()方法,将具有 timedelta 格式的值 (标量、数组、列表或 Series)转换为 Timedelta 类型。如果输入是 Series,则返回 Series;如果输入是标量,则返回值也为标量,其他情况输出 TimedeltaIndex。示例如下:

import pandas as pdimport numpy as npprint(pd.to_timedelta(['1 days 06:05:01.00003', '15.5us', 'nan']))print(pd.to_timedelta(np.arange(5), unit='s'))---------------输出结果如下:TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT], dtype='timedelta64[ns]', freq=None)TimedeltaIndex(['0 days 00:00:00', '0 days 00:00:01', '0 days 00:00:02',                '0 days 00:00:03', '0 days 00:00:04'],               dtype='timedelta64[ns]', freq=None)
算术操作

对datetime64[ns]类型的时间序列或时间戳做算术运算,其运算结果依然是datetime64[ns]数据类型。接下来,我们创建一个带有 Timedelta 与 datetime 的 DataFrame 对象,并对其做一些算术运算。

示例代码如下:

import pandas as pds = pd.Series(pd.date_range('2023-3-23', periods=5, freq='D'))#推导式用法td = pd.Series([ pd.Timedelta(days=i) for i in range(5)])df = pd.DataFrame(dict(A = s, B = td))print(df)----------------------输出结果如下:           A      B0 2023-03-23 0 days1 2023-03-24 1 days2 2023-03-25 2 days3 2023-03-26 3 days4 2023-03-27 4 days
加法运算
import pandas as pds = pd.Series(pd.date_range('2023-3-20', periods=3, freq='D'))td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])df = pd.DataFrame(dict(A = s, B = td))#加法运算df['C']=df['A']+df['B']print(df)------------------------输出结果如下:           A      B          C0 2023-03-20 0 days 2023-03-201 2023-03-21 1 days 2023-03-222 2023-03-22 2 days 2023-03-24
减法运算
import pandas as pds = pd.Series(pd.date_range('2023-3-20', periods=3, freq='D'))td = pd.Series([ pd.Timedelta(days=i) for i in range(3) ])df = pd.DataFrame(dict(A = s, B = td))df['C']=df['A']+df['B']df['D']=df['C']-df['B']print(df)-------------------------输出结果如下:           A      B          C          D0 2023-03-20 0 days 2023-03-20 2023-03-201 2023-03-21 1 days 2023-03-22 2023-03-212 2023-03-22 2 days 2023-03-24 2023-03-22
总结

本文主要介绍了pandas对于时间差的处理,与datetime的处理相比,pandas对于时间差的处理更加方便直接,后续我们将继续介绍pandas对字符串的处理。

标签: #pythonpandas减法