Python pandas列将分钟转换为秒

时间:2018-05-12 16:54:49

标签: python pandas timedelta

我有像下面的熊猫

    Runner  time
1   A      3.05.3   #( 3 minute 5 second and 3 millisecond)
2   B      2.50.2   #( 2minute 50 second and 2 millisecond)

其实我想比较时间,所以我想把时间col改为第二单位或毫秒单位

我怎么能在熊猫中做到这一点? 我在想我可以吗?

由于

2 个答案:

答案 0 :(得分:0)

用于秒列表理解,如果没有int值,则转换为NaN

df['new'] = [int(a) * 60 + int(b) + int(c) / 1000 for a,b,c in df['col2'].str.split('.')]

另一个解决方案是expand=True DataFrame值,df1 = df['col2'].str.split('.', expand=True).astype(int) df['new'] = df1[0] * 60 + df1[1] + df1[2] / 1000 用于print (df) col1 col2 new 0 A 3.05.3 185.003 1 B 2.50.2 170.002 并处理它:

miliseconds
1000

df['new'] *= 1000 print (df) col1 col2 new 0 A 3.05.3 185003.0 1 B 2.50.2 170002.0 多个li.className = 'list-group-item';

li.appendChild(document.createTextNode("testing"));

答案 1 :(得分:0)

您可以使用datetime.timedelta为您执行此计算。为方便起见,您可以将其包装在一个函数中并通过pd.Series.apply应用。

from datetime import timedelta

df = pd.DataFrame({'Runner': ['A', 'B'],
                   'time': ['3.05.3', '2.50.2']})

def seconder(x):
    mins, secs, millis = map(float, x.split('.'))
    td = timedelta(minutes=mins, seconds=secs, milliseconds=millis)
    return td.total_seconds()

df['seconds'] = df['time'].apply(seconder)

print(df)

  Runner    time  seconds
0      A  3.05.3  185.003
1      B  2.50.2  170.002