我有一个数据框,其中包含来自经纪人的信息,该数据显示了行进的距离,花费的时间和比赛的日期。
<div class="card-body sub-body">
<div class="event row" *ngFor="let note of data; let i = index" [attr.data-index]="i">
<div class="col-md-9"> {{note.note}} </div>
<div class="col-md-3 icons" *ngIf="note.creatorId == currentUserId">
<i class="fa fa-pencil-square-o" aria-hidden="true" (click)="openModal(template1, note, 2)"></i>
<i class="fa fa-times" aria-hidden="true" (click)="deleteNote(note.id)"></i>
</div>
</div>
</div>
我想在“ TIME” 列中的记录之间执行一次算术操作,以计算时间之间的差异,计算出每场比赛的平均速度。>
将文本字符串转换为大熊猫 datetime 时,它保持以下格式:
DISTANCE TIME DATE
9.8 51:50.92 09/08/18
11.1 55:59.70 24/08/18
11.1 49:25.20 29/08/18
我需要的是时间,所以我要做以下事情
1900-01-01 00:51:50
1900-01-01 00:55:59
1900-01-01 00:49:25
这导致我遇到下一个问题,该列现在为“对象”类型,因此我无法对其执行任何操作。
如何在不丢失日期时间格式的情况下将列转换为时间?并执行操作。
例如,我想计算速度,种族之间的时间和频率之间的差异。
答案 0 :(得分:2)
您可以使用to_timedelta
代替to_datetime
。见下文:
df['TIME'] = '00:' + df['TIME']
df['TIME'] = pd.to_timedelta(df['TIME'])
其结果是:
DISTANCE TIME DATE
0 9.8 00:51:50.920000 09/08/18
1 11.1 00:55:59.700000 24/08/18
2 11.1 00:49:25.200000 29/08/18
您现在可以在TIME
上使用数学运算。但是,正如Phung Duy Phong在上面的评论中所提到的,很难说这是否可以解决您的问题,而无需查看您想运行的代码。
答案 1 :(得分:1)
假设距离为km,请使用此参数以km / h为单位:
import pandas as pd
df=pd.DataFrame({'DISTANCE':[9.5,11.1,11.1],'TIME':['51:50.92','55:59.70','49:25.20'],'DATE':['09/08/18','24/08/18','29/08/18']})
df['TIME'] = '00:' + df['TIME']
df['TIME'] = pd.to_timedelta(df['TIME'])
df['SPEED (km/h)']=[df['DISTANCE'][i]/(df['TIME'][i].total_seconds()/3600) for i in df.index]#total_seconds() won't work with a pandas column so you need to apply it to each TIME cell