python - 如何将时间拆分为小时?

标签 python pandas

我有一个数据框,其中包含用户在某个网页(任务)上花费的秒数,如下所示:

UserID  Page1   Page2   Page3 ....
24      2789    2375    574 
39      3745    3800    4567
35      100     300     1005
.
.
.
我想将这些秒数拆分为如下几小时,以便我可以知道每个用户在他/她浏览网站的某个小时内在哪个页面上:
UserID  Hour1     Hour2     Hour3  ....
24      Page1     Page1     Page2 
39      Page1     Page2     Page3
35      Page1     Page1     Page1
.
.
.

最佳答案

您真的希望最终输出列是实际小时数还是仅以小时形式显示原始数据?如果后者这应该工作

# Melt down DataFrame
df = df.melt(id_vars='UserID',var_name='Page',value_name='Seconds')

  UserID Page   Seconds
0   24  Page1   2789
1   39  Page1   3745
2   35  Page1   100
3   24  Page2   2375
4   39  Page2   3800
5   35  Page2   300
6   24  Page3   574
7   39  Page3   4567
8   35  Page3   1005

# Create column of Seconds converted to Hours
df['Hours'] = df['Seconds'] / 60

# Convert float to int data type
df['Hours'] = df['Hours'].astype(int)

UserID  Page    Seconds Hours
0   24  Page1   2789    46
1   39  Page1   3745    62
2   35  Page1   100     1
3   24  Page2   2375    39
4   39  Page2   3800    63
5   35  Page2   300     5
6   24  Page3   574     9
7   39  Page3   4567    76
8   35  Page3   1005    16

# Create new DataFrame of pivoted df DataFrame
df_hrs = df.pivot_table(index=['UserID'],columns=['Page'], values='Hours')

# Reset index to flatten DataFrame
df_hrs.reset_index(inplace=True)

# Change column name attribute
df_hrs.columns.rename('',inplace=True)

 UserID Page1   Page2   Page3
0   24   46     39      9
1   35   1      5       16
2   39   62     63      76

关于python - 如何将时间拆分为小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63395510/

相关文章:

pandas - 数据集 API 'flat_map' 方法对与 'map' 方法一起使用的相同代码产生错误

python - Jupyter Lab/Notebook 魔法命令 %load 具有与平台无关的路径

python - Pandas :沿着多索引的第一层切片

python - Python 文档字符串中尾随白线的目的是什么?

python - 如果字段名称与 python 中的字典值匹配,则求和

python - 绘制几年的日期时间,但在 x 轴上仅显示十二个月

python - Dask:非常低的 CPU 使用率和多线程?这是预期的吗?

Python 通过一对 nan 获取坐标

python - 蜗牛算法 - 控制遍历的最大/最小位置

python - 当端口 1433 关闭时,pymssql 库如何回退到命名管道端口?