重塑和数据透视表

重塑和数据透视表
1、stacking and unstacking

iterables=[['bar','baz','foo','qux'],['one','two']]
index = pd.MultiIndex.from_product(iterables, names=['first', 'second'])
index

在这里插入图片描述

df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])
df

在这里插入图片描述

stacked=df.stack()
stacked

在这里插入图片描述

stacked.unstack(2)

在这里插入图片描述

 columns = pd.MultiIndex.from_tuples([
      ('A', 'cat', 'long'), ('B', 'cat', 'long'),
      ('A', 'dog', 'short'), ('B', 'dog', 'short')],
      names=['exp', 'animal', 'hair_length']
    )
columns
df = pd.DataFrame(np.random.randn(4, 4), columns=columns)
df

在这里插入图片描述

df.stack(level=['animal','hair_length'])

在这里插入图片描述

df.stack(level=[1,2])

在这里插入图片描述

columns = pd.MultiIndex.from_tuples([('A', 'cat'), ('B', 'dog'),
                                       ('B', 'cat'), ('A', 'dog')],
                                      names=['exp', 'animal'])
index = pd.MultiIndex.from_product([('bar', 'baz', 'foo', 'qux'),
                                  ('one', 'two')],
                                   names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 4), index=index, columns=columns)
df

在这里插入图片描述

df2=df.iloc[[0,1,2,4,5,7]]
df2

在这里插入图片描述

df2.stack('exp')

在这里插入图片描述
2、变形-melt

cheese = pd.DataFrame({'first': ['John', 'Mary'],
                       'last': ['Doe', 'Bo'],
                       'height': [5.5, 6.0],
                       'weight': [130, 150]})
cheese

在这里插入图片描述

cheese.melt(id_vars=['first','last'])

在这里插入图片描述

cheese.melt(id_vars=['first','last'],var_name='quantity')

在这里插入图片描述
3、wide_to_long:字符提取

#wide_to_long:提取以指定字符开头的列,i用作索引的列,j提取开头剩余的部分会成为一列
#sep:分隔符
#suffix:捕获正则表达式匹配的后缀
dft = pd.DataFrame({"A1970": {0: "a", 1: "b", 2: "c"},
                     "A1980": {0: "d", 1: "e", 2: "f"},
                    "B1970": {0: 2.5, 1: 1.2, 2: .7},
                  "B1980": {0: 3.2, 1: 1.3, 2: .1},
                   "X": dict(zip(range(3), np.random.randn(3)))
                   })

在这里插入图片描述

dft['id']=dft.index
pd.wide_to_long(dft,['A','B'],i='id',j='year')

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值