0
点赞
收藏
分享

微信扫一扫

pandas中set_index、reset_index区别

读思意行 06-23 17:50 阅读 1

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


举报

相关推荐

0 条评论