pandas 一系列分钟的自定义反转

Customized inversion of a series of minutes in pandas

我有一个 pandas.Series 字符串,以倒计时方式表示分钟,我想将其反转以按时间顺序增加。也就是说,考虑以下 Series:

pd.Series([ '30:00', '25:10', '22:30' ])
Out[1]:
0    30:00
1    25:10
2    22:30
dtype: object

系列的术语是 minutes:seconds。我想反转它并获得秒数作为整数值。也就是说,最高的是'30:00',我想作为起点,得到0的值。对于'25:10',我想要5*60-10=290。对于“22:30”,我想要 7.5*60=450 等等。因此,我想获得以下系列:

0    0
1    290
2    450
dtype: object

我知道可以使用 pd.to_datetime 将原始系列转换为日期时间对象。但是我不确定如何将它从倒计时转换为增加秒数。

您可以使用 apply() 和转换函数来执行此操作:

代码:

def count_down_from_30(time_string):
    min, sec = [int(x) for x in time_string.split(':')]
    return 30 * 60 - 60 * min - sec

测试:

data = pd.Series(['30:00', '25:10', '22:30'])
data = data.apply(count_down_from_30)
print(data)

结果:

0      0
1    290
2    450
dtype: int64

一种更通用且 pandas 特定的方法,使用 to_timedelta:

s = pd.to_timedelta('00:'+s).astype('timedelta64[s]')
s = s.iloc[0] - s

结果输出:

0      0.0
1    290.0
2    450.0