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
我有一个 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