Python 是否可以将整数转换为数据透视表中的时间间隔?

Python 是否可以将整数转换为数据透视表中的时间间隔?,python,pandas,database,pivot-table,Python,Pandas,Database,Pivot Table,这是我的pivot数据帧: Name导师学生 日期 2021-04-12 310 112 2021-04-13 394 210 2021-04-14 357 3 2021-04-15 359 0 2021-04-16 392 0 2021-04-17 307 0 2021-04-18 33

这是我的pivot数据帧:

Name导师学生
日期
2021-04-12        310         112
2021-04-13        394         210
2021-04-14        357           3
2021-04-15        359           0
2021-04-16        392           0
2021-04-17        307           0
2021-04-18        335           0
2021-04-19          0         121
Tutor和Student列下的值是表示秒数的整数。
是否可以像Python的
datetime.timedelta
那样将这些值转换为时间间隔?

对于您要查找的输出不是很清楚

我们可以利用pd.to_timedelta()方法将秒转换为timedelta

解决方案

df.iloc[:].apply(pd.to_timedelta, unit='s')  
(考虑到您希望df中的所有列都转换为时间_delta,如果不是,请使用带有列名的df.loc)

在提供的输入上进行干运行:

输入

Name    Tutor   Student
Date        
2021-04-12  310 112
2021-04-13  394 210
2021-04-14  357 3
2021-04-15  359 0
2021-04-16  392 0
2021-04-17  307 0
2021-04-18  335 0
2021-04-19  0   121
Name               Tutor    Student
Date        
2021-04-12  0 days 00:05:10 0 days 00:01:52
2021-04-13  0 days 00:06:34 0 days 00:03:30
2021-04-14  0 days 00:05:57 0 days 00:00:03
2021-04-15  0 days 00:05:59 0 days 00:00:00
2021-04-16  0 days 00:06:32 0 days 00:00:00
2021-04-17  0 days 00:05:07 0 days 00:00:00
2021-04-18  0 days 00:05:35 0 days 00:00:00
2021-04-19  0 days 00:00:00 0 days 00:02:01
输出

Name    Tutor   Student
Date        
2021-04-12  310 112
2021-04-13  394 210
2021-04-14  357 3
2021-04-15  359 0
2021-04-16  392 0
2021-04-17  307 0
2021-04-18  335 0
2021-04-19  0   121
Name               Tutor    Student
Date        
2021-04-12  0 days 00:05:10 0 days 00:01:52
2021-04-13  0 days 00:06:34 0 days 00:03:30
2021-04-14  0 days 00:05:57 0 days 00:00:03
2021-04-15  0 days 00:05:59 0 days 00:00:00
2021-04-16  0 days 00:06:32 0 days 00:00:00
2021-04-17  0 days 00:05:07 0 days 00:00:00
2021-04-18  0 days 00:05:35 0 days 00:00:00
2021-04-19  0 days 00:00:00 0 days 00:02:01
试试这个:

df["Tutor"]   = pd.to_datetime(df["Tutor"], unit='s').dt.time
df["Student"] = pd.to_datetime(df["Student"], unit='s').dt.time
结果:

    Name        Tutor       Student
1   2021-04-12  00:05:10    00:01:52
2   2021-04-13  00:06:34    00:03:30
3   2021-04-14  00:05:57    00:00:03
4   2021-04-15  00:05:59    00:00:00
5   2021-04-16  00:06:32    00:00:00
6   2021-04-17  00:05:07    00:00:00
7   2021-04-18  00:05:35    00:00:00
8   2021-04-19  00:00:00    00:02:01

您可以添加所需的输出吗?在我的例子中,可能有多个学生列,并且它们的名称是动态的,因此在这里引用特定列可能不可行。但实际上我更喜欢
而不是_datetime
或自定义函数,所以这仍然是一个非常有用的答案。谢谢你,梅林!我刚刚注意到结果中的一个问题——时间间隔似乎被缩短到了几分之一秒。例如,210秒应该变成00:03:30,上面的结果是00:00:00.000000210。让我修改它,我们可以将单位传递为秒。请检查它是否给出了期望的结果。这就成功了!可选语法:
pd.to_timedelta,unit='s')