我想将数据框中的字符串数据更改为日期时间数据 但它不起作用 例如我这里有数据框数据
TotTime
D1 12:24:13.88
D1 12:24:14.88
D1 12:24:15.88
D1 12:24:16.88
D1 12:24:17.88
,我想在日期时间更改此数据以进行计算 我该怎么办?
我尝试如下
df.StepTime = pd.to_datetime(df.StepTime)
dfn['totTime'] = dfn.totTime.apply(lambda totTime: datetime.strptime(totTime, 'D%d %H:%M:%S'))
dfn['totTime'] = dfn.totTime.apply(lambda totTime: parse(totTime))
但它不起作用
答案 0 :(得分:0)
我想,您可能不需要datetime类型,而需要使用timedelta类型。
datetime类型用于确切的日期和时间点。
timedelta用于不同长度的时间段。
我是根据您代码中的“ TotTime”命名的。
您可以使用以下代码从字符串中创建timedelta类型:
def get_days(_str):
return int(_str[1:]) # assume first simbol is 'D' and others is number of days
def get_mss(_str): #assume format is 15.88
s_ms = _str.split('.')
s = int(s_ms[0])
ms = int(s_ms[1]) * 10 # 0.88 is 880 milliseconds, not 88
return s, ms
def get_seconds(_str): # assume format is 12:24:15.88
hms = _str.split(':')
h = int(hms[0])
m = int(hms[1])
s, ms = get_mss(hms[2])
return h, m, s, ms
def str_to_td(_str):
dt1 = _str.split(' ')
days = get_days(dt1[0])
h, m, s, ms = get_seconds(dt1[1])
return datetime.timedelta(days = days, hours = h, minutes = m, seconds = seconds, milliseconds = ms)
答案 1 :(得分:0)
尝试将 temperature precipitation brooklyn manhattan williamsburg queensboro
date
2016-10-27 8.6 35.81 651 1558 2137 1902
2016-10-28 7.5 0.00 2021 3872 4271 3202
2016-10-29 10.6 0.00 1639 3160 4027 2920
2016-10-30 19.1 14.22 1702 2971 3531 2547
2016-10-31 9.4 0.00 2648 4876 5440 3720
temperature precipitation brooklyn manhattan williamsburg queensboro
date
2016-10-27 8.6 35.81 651 1558 2137 1902
2016-10-28 7.5 0.00 2021 3872 4271 3202
2016-10-29 20.0 0.00 1639 3160 4027 2920
2016-10-30 20.0 14.22 1702 2971 3531 2547
2016-10-31 20.0 0.00 2648 4876 5440 3720
temperature precipitation brooklyn manhattan williamsburg queensboro temperature_f
date
2016-10-27 8.6 35.81 651 1558 2137 1902 8.6
2016-10-28 7.5 0.00 2021 3872 4271 3202 7.5
2016-10-29 20.0 0.00 1639 3160 4027 2920 20.0
2016-10-30 20.0 14.22 1702 2971 3531 2547 20.0
2016-10-31 20.0 0.00 2648 4876 5440 3720 20.0
与datetime64数据类型一起使用。
.astype()