“如何将数据帧中的对象列的持续时间(例如2h 50m、8h 35m)转换为只有分钟的日期时间列?”

2024-04-25 13:44:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框中有一个名为Duration的列。你知道吗

列中的持续时间格式为2h 50m, 8h 35m, 19h and so on。你知道吗

此列类型是'object'。你知道吗

如何将整根柱子换算成2小时50米=170米,8小时35米=515米?你知道吗

我试过用

df['Col_name'] = pd.to_datetime(df['Col_name'])

Tags: and数据name类型dfsoobjecton
1条回答
网友
1楼 · 发布于 2024-04-25 13:44:47

使用^{}表示数值,用60表示多个小时,用^{}表示总和,转换为整数、字符串和最后的加法m

h = df['Col_name'].str.extract('(\d+)h', expand=False).astype(float) * 60
m = df['Col_name'].str.extract('(\d+)m', expand=False).astype(float)

df['new'] = h.add(m, fill_value=0).astype(int).astype(str) + 'm'

另一个解决方案,谢谢@anky\u 91:

df['new1'] = (pd.to_timedelta(df['Col_name']).dt.seconds // 60).astype(str) + 'm'
print (df)

  Col_name    new   new1
0   2h 50m   170m   170m
1   8h 35m   515m   515m
2      19h  1140m  1140m

但是,如果以后需要通过datetimelike函数处理此数据,可以将其转换为TimeDelta:

df['timedelta'] = pd.to_timedelta(df['Col_name'])
print (df)
  Col_name    new   new1 timedelta
0   2h 50m   170m   170m  02:50:00
1   8h 35m   515m   515m  08:35:00
2      19h  1140m  1140m  19:00:00

相关问题 更多 >