LML*_*LPP 2 python datetime pandas
我有一个格式为时间数据的数据框
hh:mm:ss
hh:mm:ss
Run Code Online (Sandbox Code Playgroud)
(输入字符串)
我需要能够对几列中的值求和(以获取总时间)。我想知道是否有人对执行此操作并以相同格式获得总和的最佳方法有任何建议。
您可以使用 timedelta 执行此操作:
import pandas as pd
import datetime
data = {'t1':['01:15:31',
'00:47:15'],
't2':['01:13:02',
'00:51:33']
}
def make_delta(entry):
h, m, s = entry.split(':')
return datetime.timedelta(hours=int(h), minutes=int(m), seconds=int(s))
df = pd.DataFrame(data)
df = df.applymap(lambda entry: make_delta(entry))
df['elapsed'] = df['t1'] + df['t2']
In [23]: df
Out[23]:
t1 t2 elapsed
0 01:15:31 01:13:02 02:28:33
1 00:47:15 00:51:33 01:38:48
Run Code Online (Sandbox Code Playgroud)
编辑:我看到您需要按列执行此操作,而不是按行执行。在这种情况下,做同样的事情,但是:
In [24]: df['t1'].sum()
Out[24]: Timedelta('0 days 02:02:46')
Run Code Online (Sandbox Code Playgroud)
你可以用to_timedelta与sum:
import pandas as pd
df = pd.DataFrame({'A': ['18:22:28', '12:15:10']})
df['A'] = pd.to_timedelta(df.A)
print (df)
A
0 18:22:28
1 12:15:10
print (df.dtypes)
A timedelta64[ns]
dtype: object
print (df.A.sum())
1 days 06:37:38
Run Code Online (Sandbox Code Playgroud)