我爱编程

132、pandas操作——重塑层次化索引

2018-01-26  本文已影响0人  陈容喜

重塑或轴向旋转指的是用于重新排列表格型数据的基础运算。
层次化索引能够为DataFrame数据的重排任务提供一种就有良好一致性山东方式。主要功能有:
1、stack:将数据的列“旋转”为行
2、unstack:将数据的行“旋转”为列

下面是一个DataFrame对象,其中行列索引均为字符串: 1.png 使用stack方法将列转为行,得到一个Series: 2.png 对于一个层次化索引的Series,可以用unstack将其重排为一个DataFrame: 3.png 默认情况下,unstack操作的是内层(stack也是如此)。传入分层级别的编号或名称即可对其他级别进行unstack操作: 4.png 如果在分组中找不到级别值,则unstack操作会引入缺失数据: 5.png stack默认会滤除缺失数据: 6.png 对DataFrame进行unstack操作时,作为旋转轴的级别将会成为结果中最低级别: 7.png

源码:

# coding: utf-8

# ### 重塑层次化索引

# stack:将数据的列“旋转”为行
# 
# unstack:将数据的行“旋转”为列

# In[1]:

import numpy as np
from pandas import Series,DataFrame
import pandas as pd


# In[2]:

data = DataFrame(np.arange(6).reshape((2,3)),
                 index=pd.Index(['Ohio','Colorado'],name='state'),
                 columns=pd.Index(['one','two','three'],name='number'))
print(data)


# In[3]:

# 使用stack方法将列转为行
result = data.stack()
print(result)


# In[4]:

# 对于层次化索引的Series,使用unstack将其重排为DataFrame对象
result.unstack()


# In[5]:

# 传入分层级别编号或名称进行unstack操作
result.unstack(0)


# In[6]:

# 或传入名称进行unstack操作
result.unstack('state')


# In[7]:

# 如果在分组中找不到级别值,则unstack操作会引入缺失数据
s1 = Series([0,1,2,3],index=['a','b','c','d'])
s2 = Series([4,5,6],index=['c','d','e'])
data2 = pd.concat([s1,s2],keys=['one','two'])
print(data2)
data2.unstack()
上一篇 下一篇

猜你喜欢

热点阅读