Pandas中set_index和reset_index的用法及区别

本文详细介绍了如何使用Pandas库中的DataFrame进行索引设置与还原操作,包括单索引和复合索引的设置,以及如何通过reset_index方法将索引还原为列,适用于数据处理与分析场景。

1.set_index

DataFrame可以通过set_index方法,可以设置单索引和复合索引。
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
append添加新索引,drop为False,inplace为True时,索引将会还原为列。

In [307]: data
Out[307]: 
     a    b  c    d
0  bar  one  z  1.0
1  bar  two  y  2.0
2  foo  one  x  3.0
3  foo  two  w  4.0
 
In [308]: indexed1 = data.set_index('c')
 
In [309]: indexed1
Out[309]: 
     a    b    d
c               
z  bar  one  1.0
y  bar  two  2.0
x  foo  one  3.0
w  foo  two  4.0
 
In [310]: indexed2 = data.set_index(['a', 'b'])
 
In [311]: indexed2
Out[311]: 
         c    d
a   b          
bar one  z  1.0
    two  y  2.0
foo one  x  3.0
    two  w  4.0

2.reset_index

reset_index可以还原索引,重新变为默认的整型索引
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)
level控制了具体要还原的那个等级的索引
drop为False则索引列会被还原为普通列,否则会丢失

In [318]: data
Out[318]: 
         c    d
a   b          
bar one  z  1.0
    two  y  2.0
foo one  x  3.0
    two  w  4.0
 
In [319]: data.reset_index()
Out[319]: 
     a    b  c    d
0  bar  one  z  1.0
1  bar  two  y  2.0
2  foo  one  x  3.0
3  foo  two  w  4.0

作者:七七biubiu
链接:https://www.jianshu.com/p/b89835a95612
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

### Pandasset_indexreset_index用法区别 #### 1. `set_index` 方法 `set_index()` 是一个用于将 DataFrame 的某一列或多列设置为索引的方法。该方法的主要功能是将指定的列转换为行索引,从而实现更灵活的数据操作。通过参数可以控制是否保留原列以及是否追加到现有索引上[^1]。 - **参数说明**: - `keys`: 指定要设置为索引的列名(可以是一个或多个列)。 - `drop`: 默认值为 `True`,表示在将列设置为索引后删除该列;如果设置为 `False`,则保留原列[^2]。 - `append`: 默认值为 `False`,表示替换当前索引;如果设置为 `True`,则将新索引附加到现有索引上。 - `verify_integrity`: 如果设置为 `True`,会检查新索引是否唯一,如果不唯一则抛出异常[^3]。 ```python import pandas as pd data = {'test': ['20230101', '20230205', '20230506', '20230721', '20231131'], 'A': ['100', '100', '102', '103', '104'], 'B': ['200', '201', '202', '203', '204'], 'C': ['300', '301', '302', '303', '304']} df = pd.DataFrame(data) # 将 'A' 列设置为索引,并删除原列 df_set = df.set_index('A') print(df_set) # 索引变为 'A' 列,原 'A' 列被删除 # 将 'test' 列设置为索引,并保留原列 df_set_drop_false = df.set_index('test', drop=False) print(df_set_drop_false) # 'test' 列作为索引,同时保留原列 ``` #### 2. `reset_index` 方法 `reset_index()` 是一个用于重置 DataFrame 索引的方法。该方法的主要功能是将当前的行索引转换为普通列,并生成一个新的默认整数索引[^4]。 - **参数说明**: - `drop`: 默认值为 `False`,表示将原来的索引作为一列插入到 DataFrame 中;如果设置为 `True`,则直接丢弃原来的索引。 - `level`: 如果需要重置多级索引中的某一级,可以使用此参数指定级别。 - `inplace`: 如果设置为 `True`,则直接在原 DataFrame 上修改,而不是返回新的 DataFrame。 ```python # 重置索引并将原索引作为新列插入 df_reset = df_set.reset_index() print(df_reset) # 原索引 'A' 成为普通列,新增默认整数索引 # 重置索引并丢弃原索引 df_reset_drop = df_set.reset_index(drop=True) print(df_reset_drop) # 不保留原索引,只有默认整数索引 ``` #### 3. 主要区别 - **作用对象**: - `set_index` 将普通列设置为索引。 - `reset_index` 将索引重置为默认整数索引,并可选择保留或丢弃原索引。 - **数据结构变化**: - `set_index` 减少或保持列数,增加索引层级。 - `reset_index` 增加列数(若不丢弃原索引),减少或保持索引层级。 - **应用场景**: - 使用 `set_index` 可以方便地根据特定列进行分组、聚合等操作。 - 使用 `reset_index` 可以恢复索引为默认状态,便于后续处理或导出数据。 ```python # 示例:结合 set_index reset_index df_set = df.set_index('test') # 设置 'test' 列为索引 df_reset = df_set.reset_index() # 将索引重置为默认整数索引 print(df_reset) ``` ### 注意事项 - 当使用 `set_index` 时,如果指定的列包含重复值且 `verify_integrity=True`,将会抛出异常。 - 在调用 `reset_index` 时,如果不需要保留原索引,可以通过 `drop=True` 参数简化代码逻辑。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值