Python 是否可以将整数转换为数据透视表中的时间间隔?
这是我的pivot数据帧: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
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')
。