如何将数据框中的时间差转换为日期时间
我在数据表中有几列是平均时间,比如“0天 00:00:21”。我想把所有这些列转换成“hh:mm:ss”格式,也就是只要时间,不要“0天”。我该怎么做呢?
2 个回答
0
我不太确定你的数据是怎么存储的……不过你可以试试这样做:
# Example DataFrame
data = {'time1': ['0 days 00:00:21', '0 days 00:01:15', '0 days 00:02:45'],
'time2': ['0 days 00:00:35', '0 days 00:00:50', '0 days 00:03:10']}
df = pd.DataFrame(data)
# Convert columns to timedelta objects
df[['time1', 'time2']] = df[['time1', 'time2']].apply(pd.to_timedelta)
# Extract time component and convert to string
df[['time1', 'time2']] = df[['time1', 'time2']].applymap(lambda x: x.seconds)
# Convert seconds to hh:mm:ss format
df[['time1', 'time2']] = df[['time1', 'time2']].applymap(lambda x: pd.to_datetime(x, unit='s').time())
print(df)`
0
这段代码应该没问题。
如果你有4列数据,可以先列出你想要修改的列名。然后用一个循环来逐个处理这些列名。这样就可以把这些列进行转换了。
column_names = ["first","second","third","fourth"]
for name in column_names:
df[name] = df[name].dt.seconds.apply(lambda x: pd.to_datetime(x, unit='s').time())