DataFrame列和索引互换的方法及整数索引

  • 原创
  • |
  • 浏览:18679
  • |
  • 更新:

      Python是目前最流行最简单用途最广泛的编程语言,大数据时代最应该学习的一门编程语言。其中,数据分析的库pandas是Python最经典的库之一。DataFrame和Series是pandas最重要的2个数据结构。

      有人会问是否可以把DataFrame的列拉到索引中呢?(就像透视表那样随便拖拽自由),当然可以的;如果整数做索引会有一些歧义,也需要注意一下;下面通过一个例子来看看。

工具/原料

  • python,anaconda,spyder
  • DataFrame,Series

方法/步骤

  1. 1

    前提:加载numpy,pandas和Series,DataFrame。

    生成一个8*4的DataFrame,列名为'a','b','c','d',命名为df1,如图

    DataFrame列和索引互换的方法及整数索引
  2. 2

    将DataFrame的列转换为索引。

    df1.set_index(['c'])将‘c’列转换为索引;

    df1.set_index(['c','d'])分别将‘c’列和‘d’列转化为索引,如图所示

    DataFrame列和索引互换的方法及整数索引
  3. 3

    如果将DataFrame的列转换为索引后,仍然想把转换的列留下来,那么可以使用参数drop=False,如图所示

    DataFrame列和索引互换的方法及整数索引
  4. 4

    如果想要把索引放回到列中,可以使用reset_index()。

    df1.set_index(['c','d']).reset_index()首先用df1.set_index()把df1的'c'和'd'列转换为索引之后,再用reset_index()将索引转换到列(其实相当于做了一个逆运算),如图所示

    DataFrame列和索引互换的方法及整数索引
  5. 5

    为了验证整数索引可能产生歧义,需要生成2个Series,其中一个不指定索引(s1),一个指定字符索引(s2),如图所示

    DataFrame列和索引互换的方法及整数索引
  6. 6

    使用整数索引对比s1和s2的区别(基于标签或位置索引)。

    发现如果是整数索引使用s1[-1]则报错,如图所示

    DataFrame列和索引互换的方法及整数索引
    DataFrame列和索引互换的方法及整数索引
  7. 7

    使用整数索引对比s1和s2的区别(使用切片)

    带有字符索引的切片报错了,说明操作面向标签的,如图所示

    DataFrame列和索引互换的方法及整数索引
    END
  8. 7
    本页面未经授权抓取自百度经验

注意事项

  • set_index和reset_index刚好是互逆运算
  • set_index和reset_index同时操作之后,列的顺序有可能与原始的顺序不一样,若需要完全一样,可以使用DataFrame的columns参数指定顺序即可
  • 如果使用整数索引需要留意是否会产生歧义
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部