带有“时间”格式值的数据框列需要在24小时内添加。 例如:如果将24小时的值添加为10:30:30,则预期结果为34:30:30,下面的代码段(作为图像添加)生成'0 days 10:30:30'
enter image description here 任何人都可以指导我不要获得0days并获得24小时以增加小时值。
答案 0 :(得分:0)
示例:
N = 10
np.random.seed(2019)
rng = pd.date_range('2017-04-03 15:30:20', periods=N, freq='13.3T')
df = pd.DataFrame({'vstime': np.abs(np.random.choice(rng, size=N) -
np.random.choice(rng, size=N))})
print (df)
vstime
0 00:39:54
1 00:13:18
2 01:06:30
3 01:19:48
4 00:13:18
5 00:13:18
6 01:46:24
7 01:06:30
8 00:39:54
9 01:46:24
相反,您的代码使用to_timedelta
并添加Timedelta
。
df['vstime'] = pd.to_timedelta(df['vstime']) + pd.Timedelta(24, unit='h')
格式化timedelta不是本地支持的,因此需要自定义功能:
def f(x):
ts = x.total_seconds()
hours, remainder = divmod(ts, 3600)
minutes, seconds = divmod(remainder, 60)
return ('{}:{:02d}:{:02d}').format(int(hours), int(minutes), int(seconds))
df['duration'] = df['vstime'].apply(f)
print (df)
vstime duration
0 1 days 00:39:54 24:39:54
1 1 days 00:13:18 24:13:18
2 1 days 01:06:30 25:06:30
3 1 days 01:19:48 25:19:48
4 1 days 00:13:18 24:13:18
5 1 days 00:13:18 24:13:18
6 1 days 01:46:24 25:46:24
7 1 days 01:06:30 25:06:30
8 1 days 00:39:54 24:39:54
9 1 days 01:46:24 25:46:24