层次化索引MultiIndex

 

 

mask=pd.MultiIndex.from_arrays([['Ohio', 'Ohio', 'Colorado'], ['Green','bed', 'Green']],
                               names=('state', 'color'))

df = pd.DataFrame(np.arange(12).reshape((4, 3)),index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
                  columns=mask)


df.index.names=['key1','key2']
df.columns.names=['state','color']

print("\n源数据:\n",df)


print("\n对源数据index排序:\n",df.sort_index(level=1))
print("\n交换级别:\n")
print(df.swaplevel('key1','key2'))
print("\n交换级别后排序:\n")
print(df.swaplevel('key1','key2').sort_index(level=0))

结果:

 

 

 可以对比看到,排序的结果是一样的

 

 

 END

 

 

 

 

 

#df.set_index( )函数的用法
df=pd.DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','two'],
                 'd':[0,1,2,0,1,2,3]})


print("源数据:\n",df)

df2=df.set_index(['c','d'])
df3=df.set_index(['c','d'],drop=False)


print("\ndf.set_index(['c','d']层次化索引,df2:\n",df2)
print("\ndf.set_index(['c','d'],drop=False层次化索引,drop,df3:\n",df3)

结果:

 END

 

 

 

 

 

left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b','c'],'value': range(6)})
right1 = pd.DataFrame({'group_val': [3.5, 7]}, index=['a', 'b'])

print("left1:\n",left1)
print("right1:\n",right1)

mask=left1.join(right1)
mask2=left1.join(right1,on='key')

print("\n不指定key值:\n",mask)
print("\n指定key值:\n",mask2)

结果:

 

  END

 

posted @ 2020-04-26 12:33  limalove  阅读(732)  评论(0)    收藏  举报