如何将数据框中的时间差转换为日期时间

1 投票
2 回答
53 浏览
提问于 2025-04-12 20:45

我在数据表中有几列是平均时间,比如“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())

撰写回答