多语言展示
当前在线:506今日阅读:23今日分享:25

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

Python是目前最流行最简单用途最广泛的编程语言,大数据时代最应该学习的一门编程语言。其中,数据分析的库pandas是Python最经典的库之一。DataFrame和Series是pandas最重要的2个数据结构。      有人会问是否可以把DataFrame的列拉到索引中呢?(就像透视表那样随便拖拽自由),当然可以的;如果整数做索引会有一些歧义,也需要注意一下;下面通过一个例子来看看。
工具/原料
1

python,anaconda,spyder

2

DataFrame,Series

方法/步骤
1

前提:加载numpy,pandas和Series,DataFrame。生成一个8*4的DataFrame,列名为'a','b','c','d',命名为df1,如图

2

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

3

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

4

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

5

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

6

使用整数索引对比s1和s2的区别(基于标签或位置索引)。发现如果是整数索引使用s1[-1]则报错,如图所示

7

使用整数索引对比s1和s2的区别(使用切片)带有字符索引的切片报错了,说明操作面向标签的,如图所示

注意事项
1

set_index和reset_index刚好是互逆运算

2

set_index和reset_index同时操作之后,列的顺序有可能与原始的顺序不一样,若需要完全一样,可以使用DataFrame的columns参数指定顺序即可

3

如果使用整数索引需要留意是否会产生歧义

推荐信息