我有一个pandas数据框,创建如下:
df = pd.DataFrame({
'rank': ['1', '1', '1', '1', '2', '2'],
'name': ['bob', 'rick', 'bob', 'rick', 'randy', 'billy'],
'position': ['sanitation', 'washer', 'sanitation', 'washer', 'sanitation', 'washer']
})
这将生成如下所示的数据帧:
我希望能够操纵数据帧,使其最终看起来像这样:
基本上,我希望在所有位置用完后,重复的排名出现在新行上
当我尝试这个:
pivot = df.pivot_table(values='name', index='rank', columns='position')
我得到一个错误“DataError:没有要聚合的数值类型”
无论如何,我不确定这是否有效,因为我选择“排名”作为索引,我并不真的想在排名上建立索引。一旦职位列表用完,我希望在新的一行中重复排名
有什么想法吗?谢谢
您可以使用
groupby().cumcount()
分配相对排名,然后使用pivot_table
:输出:
DataFrame.reset_索引 与set_索引相反
DataFrame.reindex 更改为新索引或扩展索引
DataFrame.reindex_-like 更改为与其他数据帧相同的索引
将索引设置为“排名”列:
相关问题 更多 >
编程相关推荐