我目前有一个如下所示的数据框:
df = pd.DataFrame({'browser': ['Chrome', 'Chrome', 'firefox', 'firefox', 'Safari'],
'version': ['87', '88', '92', '93', '12'],
'Monday': ['11am', '1pm', '1pm', '12pm', '2pm'],
'Tuesday': ['11am', '1pm', '12pm', '10am', '2pm'],
'Wednesday': ['12pm', '10am', '1pm', '12pm', '12pm'],
'Thursday': ['10am', '11am', '10am', '10am', '12pm'],
'Friday': ['2pm', '10am', '10am', '12pm', '11am'],
'Saturday': ['11am', '12pm', '10am', '11am', '11am'],
'Sunday': ['11am', '12pm', '11am', '12pm', '11am']})
我正在尝试旋转上述数据框,以便
- 该索引是一天中的 24 小时,即在列中看到的值 Monday...Sunday
- 列是周一到周日
- 要填充的值是浏览器+版本的唯一计数(假设输入 df 中的每一行在字符串连接时始终具有唯一的浏览器+版本)
最终的数据框看起来像这样(显示前 5 行,但总共有 24 行 - 每小时 1 行):

我尝试查看pd.pivot特别是参数索引的代码并尝试提供我的索引,但这会导致错误。例如。
index_for_new_df = ['12am'] + [f'{x}am' for x in range(1,12)] + ['12pm'] + [f'{x}pm' for x in range(1,12)]
# will generate list like [... ,'10am', '11am', '12pm', '1pm', '2pm' ,...]
pd.pivot(df,index=index_for_new_df,...)
有没有其他可以使用的功能?我试图避免编写太多嵌套FOR循环并尝试查看是否有任何可以使用的内置函数(只要大部分处理由 pandas 完成,For 循环就可以了)。有没有其他功能可以尝试?
