美文网首页我爱编程
132、pandas操作——重塑层次化索引

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

作者: 陈容喜 | 来源:发表于2018-01-26 00: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()

相关文章

网友评论

    本文标题:132、pandas操作——重塑层次化索引

    本文链接:https://www.haomeiwen.com/subject/bjgvaxtx.html