如何删除 0 天并仅在 pandas 的数据框中保留时间

问题描述 投票:0回答:2

您好,我在将时间转换为时间增量时遇到问题。我设法只保留时间,但它变成了对象类型。我想问您是否可以帮助我仅将时间保留为 timedelta 类型。下面是我的数据框的示例。 |时间 | ST|S| | ---------------| ---|-| | 0 天 12:09:46| 33 |R| | 0 天 12:09:51| 45 |H|

我尝试了以下方法

  n['Time'] = pd.to_timedelta(n['Time'])
# n['Time'] = pd.to_timedelta(n['Time'], unit='s') # error unit must not be specified if the input contains a str
  n['Time'] = n['Time'].astype(str).str.split('0 days ').str[-1] # works but cant 
  resample the data 
  n= n.set_index('Time')#.resample('6s').mean()


以前可以用,当我换新笔记本电脑时,出现了 0 天

感谢您的时间和帮助

python pandas timedelta
2个回答
0
投票

在重新采样之前我们必须删除接触字符串的 S 列 0 天不会影响重采样或绘图,因为数据中的所有行都是相同的

n= n.drop(['s'], axis = 1)
n['Time'] = pd.to_timedelta(n['Time']) 
n = n.set_index('Time')#.resample('6s').mean()

这个效果很好 谢谢


0
投票

虽然目前还没有直接的方法可以做到这一点,但仍然可以按照以下示例来完成:-

import pandas as pd
time_range = pd.timedelta_range("00:00:00", "20:00:00", periods=6)

time_range 是一个 timedelta 索引对象,它在您要查找的时间范围上附加了“0 天”,现在为了删除 0 天。做

lt=time_range.format(date_format = "%H:%m:%s")
lt = [i[7:] for i in lt]

lt 是包含时间范围的列表。

© www.soinside.com 2019 - 2024. All rights reserved.