pandas中set_index、reset_index区别

简介: pandas中set_index、reset_index区别

1.set_index()


  • 作用:DataFrame可以通过set_index方法,将普通列设置为单索引/复合索引
  • 格式:DataFrame.set_index(key,drop=True,append=False,verify_intergrity=False)
import pandas as pd
df=pd.DataFrame({'A':['0','1','2','3'],
                 'B':['4','5','6','7'],
                 'C':['8','9','10','11'],
                 'D':['12','13','14','15']})            
print('\n',df)
df_drop=df.set_index('A',drop=True)
print('\n',df_drop)
df_drop1=df.set_index('A',drop=False)
df_append=df.set_index('A',append=False)
df_append1=df.set_index('A',append=True)
print(df_append)
print(df_append1)
    A  B   C   D
0  0  4   8  12
1  1  5   9  13
2  2  6  10  14
3  3  7  11  15
    B   C   D
A           
0  4   8  12
1  5   9  13
2  6  10  14
3  7  11  15
   B   C   D
A           
0  4   8  12
1  5   9  13
2  6  10  14
3  7  11  15 
  A  B   C  D   
0 0  4   8  12
1 1  5   9  13
2 2  6  10  14
3 3  7  11  15


2.reset_index()


作用:reset_index可以还原索引为普通列,重新变为默认的整形索引

格式:DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)


import pandas as pd
df = pd.DataFrame({ 'A': ['A0', 'A1', 'A2', 'A3','A4'],
                     'B': ['B0', 'B1', 'B2', 'B3','B4'],
                     'C': ['C0', 'C1', 'C2', 'C3','C4'],
                     'D': ['D0', 'D1', 'D2', 'D3','D4']})
print ('输出结果\ndf:\n',df)
print('------')
df1 = df.reset_index(drop=False) # 默认为False,原有的索引不变,添加一列,列名index;
print (df1)
print('------')
df2 = df.reset_index(drop=True) # 索引被还原为普通列,瞬间又被删掉了,同时在原位置重置原始索引012...;
print (df2)
'''
输出结果
df:
     A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
------
   index   A   B   C   D
0      0  A0  B0  C0  D0
1      1  A1  B1  C1  D1
2      2  A2  B2  C2  D2
3      3  A3  B3  C3  D3
4      4  A4  B4  C4  D4
------
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
'''
复制代码
情况(2)对使用过set_index()函数的DataFrame进行reset
复制代码
# 一般情况下参数只使用到drop,这里只演示drop的使用
import pandas as pd
df = pd.DataFrame({ 'A': ['A0', 'A1', 'A2', 'A3','A4'],
                     'B': ['B0', 'B1', 'B2', 'B3','B4'],
                     'C': ['C0', 'C1', 'C2', 'C3','C4'],
                     'D': ['D0', 'D1', 'D2', 'D3','D4']})
print ('输出结果:\ndf:\n' ,df)
print('------')
newdf = df.set_index('A') # 这里的drop必需为True(默认为这里的drop必需为True),否则会报错ValueError: cannot insert A, already exists(意思是...只可意会不可言传哈哈)
print (newdf)
print('------')
newdf1 = newdf.reset_index(drop=False) #索引列会被还原为普通列
print (newdf1)
print('------')
newdf2 = newdf.reset_index(drop=True) #索引被还原为普通列,瞬间又被删掉了,同时在原位置重置原始索引;
print (newdf2)
'''
输出结果:
df:
     A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
------
     B   C   D
A             
A0  B0  C0  D0
A1  B1  C1  D1
A2  B2  C2  D2
A3  B3  C3  D3
A4  B4  C4  D4
------
    A   B   C   D
0  A0  B0  C0  D0
1  A1  B1  C1  D1
2  A2  B2  C2  D2
3  A3  B3  C3  D3
4  A4  B4  C4  D4
------
    B   C   D
0  B0  C0  D0
1  B1  C1  D1
2  B2  C2  D2
3  B3  C3  D3
4  B4  C4  D4


相关文章
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
106 3
|
4月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
2月前
|
存储 JavaScript 前端开发
Set、Map、WeakSet 和 WeakMap 的区别
在 JavaScript 中,Set 和 Map 用于存储唯一值和键值对,支持多种操作方法,如添加、删除和检查元素。WeakSet 和 WeakMap 则存储弱引用的对象,有助于防止内存泄漏,适合特定场景使用。
|
2月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
43 1
|
4月前
|
存储 Python
set() 和 freezeset() 之间有什么区别?
【8月更文挑战第29天】
40 6
|
3月前
|
索引 Python
Pandas中的时间序列利器:set_index用法
Pandas中的时间序列利器:set_index用法
94 0
|
4月前
|
Python
python中set和frozenset方法和区别
python中set和frozenset方法和区别
|
4月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
4月前
|
存储 Java 索引
|
4月前
|
Kubernetes 容器 Perl
在K8S中,Replica Set和Replication Controller之间有什么区别?
在K8S中,Replica Set和Replication Controller之间有什么区别?