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