能否仅按键对DataFrame行分组,仅将键列转为索引而不修改其他列?若可行,如何实现?
问题解答:仅按指定键将列转为索引,保留所有原始行与列
当然可以实现你想要的操作!不需要对其他列做任何修改,只需要把指定的键列转为索引,同时保留所有原始行的数据,用pandas的set_index()方法就能轻松搞定。
具体实现步骤
首先还原你的示例DataFrame:
import pandas as pd df = pd.DataFrame({ "id": ['A','A','A','B','B','C','C','C','C'], "data1": [11,35,46,11,26,25,39,50,55], "data2": [1,1,1,1,1,2,2,2,2], })
接下来执行转索引操作,只需要指定要转为索引的列名即可:
result_df = df.set_index('id')
执行结果
运行后得到的result_df就是你期望的格式,在支持分层索引可视化的环境(比如Jupyter Notebook)中,重复的索引值会自动合并显示,呈现出缩进式的视觉效果:
| id | data1 | data2 |
|---|---|---|
| A | 11 | 1 |
| 35 | 1 | |
| 46 | 1 | |
| B | 11 | 1 |
| 26 | 1 | |
| C | 25 | 2 |
| 39 | 2 | |
| 50 | 2 | |
| 55 | 2 |
关键说明
set_index('id')只会把指定的'id'列移到索引位置,不会修改其他任何列的内容,也不会删除或合并任何原始行。- 如果之后需要把索引转回普通列,只需执行
result_df.reset_index()即可恢复原结构。
内容的提问来源于stack exchange,提问作者Lemisourd
相关产品推荐
相关产品推荐

