Pandas的库的数据类型操作

本文总结了Python数据分析库Pandas中如何改变Series和DataFrame对象的索引,包括使用.reindex()进行重排,以及索引的增加、删除方法。通过实例展示了如何删除和插入索引,并提醒在使用'method'填充时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程进行整理和总结。
改变Series和DataFrame对象。

  • 增加或重排:重新索引
    使用.reindex()能够改变或重排Series和DataFrame索引。
d.reindex(index=['c5','c4','c3','c2','c1'])

	城市	环比	同比	定基
c5	沈阳	100.5	120.1	122.3
c4	深圳	100.9	119.5	1210.0
c3	广州	101.3	120.1	122.4
c2	上海	101.2	120.6	122.5
c1	北京	101.5	120.7	121.4
d.reindex(columns=['定基','同比','环比','城市'])
	定基	同比	环比	城市
c1	121.4	120.7	101.5	北京
c2	122.5	120.6	101.2	上海
c3	122.4	120.1	101.3	广州
c4	1210.0	119.5	100.9	深圳
c5	122.3	120.1	100.5	沈阳

可以看到,通过使用reindex可以改变横向索引和横向colums的顺序关系。
.reindex(index=None,columns=None,…)的参数

参数说明
index,columns新的行列自定义索引
fill_value重新索引中,用于填充缺失位置的值
method填充方法,ffill当前值向前填充,bfill向后填充
limit最大填充量
copy默认True,生成新的对象,False时,新旧相等不复制
d = {'城市':['北京','上海','广州','深圳','沈阳'],
    '环比':[101.5,101.2,101.3,100.9,100.5],
    '同比':[120.7,120.6,120.1,119.5,120.1],
    '定基':[121.4,122.5,122.4,1210,122.3]}
d = pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
d
	城市	环比	同比	定基
c1	北京	101.5	120.7	121.4
c2	上海	101.2	120.6	122.5
c3	广州	101.3	120.1	122.4
c4	深圳	100.9	119.5	1210.0
c5	沈阳	100.5	120.1	122.3
newc = d.columns.insert(4,'新增')
newd = d.reindex(columns=newc,fill_value=200)
newd

	城市	环比	同比	定基	新增
c1	北京	101.5	120.7	121.4	200
c2	上海	101.2	120.6	122.5	200
c3	广州	101.3	120.1	122.4	200
c4	深圳	100.9	119.5	1210.0	200
c5	沈阳	100.5	120.1	122.3	200

对于Series和DataFrame来说,索引都是Index类型,Index对象是不可修改的类型。对索引类型的常用操作有如下方法。

方法说明
.append(idx)连接一个index对象,生成一个新的index对象
.difference(idx)计算差集,产生新的index对象
.intersection(idx)计算交集
.union (idx)计算并集
.delete(loc)删除位置loc处的元素
.insert(loc,e)在位置loc处增加一个元素e
d = {'城市':['北京','上海','广州','深圳','沈阳'],
    '环比':[101.5,101.2,101.3,100.9,100.5],
    '同比':[120.7,120.6,120.1,119.5,120.1],
    '定基':[121.4,122.5,122.4,1210,122.3]}
d = pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
d
	城市	环比	同比	定基
c1	北京	101.5	120.7	121.4
c2	上海	101.2	120.6	122.5
c3	广州	101.3	120.1	122.4
c4	深圳	100.9	119.5	1210.0
c5	沈阳	100.5	120.1	122.3
d.columns.delete(2)
Index(['城市', '环比', '定基'], dtype='object')

d.columns会返回d对应1轴上的索引,是一个Index对象,d.columns.delete(2)表示返回删除1轴第二个索引后的索引对象,同理可以得到我们可以使用inesert方法在指定位置新增索引并返回更改后的索引对象:

d.index.insert(5,'c6')
Index(['c1', 'c2', 'c3', 'c4', 'c5', 'c6'], dtype='object')

再看一个例子:

d = {'城市':['北京','上海','广州','深圳','沈阳'],
    '环比':[101.5,101.2,101.3,100.9,100.5],
    '同比':[120.7,120.6,120.1,119.5,120.1],
    '定基':[121.4,122.5,122.4,1210,122.3]}
d = pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
d
	城市	环比	同比	定基
c1	北京	101.5	120.7	121.4
c2	上海	101.2	120.6	122.5
c3	广州	101.3	120.1	122.4
c4	深圳	100.9	119.5	1210.0
c5	沈阳	100.5	120.1	122.3
newc = d.columns.delete(2)
newc
Index(['城市', '环比', '定基'], dtype='object')
newi = d.index.insert(5,'c6')
newi
newi
Index(['c1', 'c2', 'c3', 'c4', 'c5', 'c6'], dtype='object')
nd = d.reindex(index=newi,columns=newc).ffill()
nd
	城市	环比	定基
c1	北京	101.5	121.4
c2	上海	101.2	122.5
c3	广州	101.3	122.4
c4	深圳	100.9	1210.0
c5	沈阳	100.5	122.3
c6	沈阳	100.5	122.3

此时要注意,如果使用method='ffill’会报错,网上查了一下也没有找到具体什么原因,后续使用method进行填充时建议使用上述方法。
删除:drop

d = {'城市':['北京','上海','广州','深圳','沈阳'],
    '环比':[101.5,101.2,101.3,100.9,100.5],
    '同比':[120.7,120.6,120.1,119.5,120.1],
    '定基':[121.4,122.5,122.4,1210,122.3]}
d = pd.DataFrame(d,index=['c1','c2','c3','c4','c5'])
d
	城市	环比	同比	定基
c1	北京	101.5	120.7	121.4
c2	上海	101.2	120.6	122.5
c3	广州	101.3	120.1	122.4
c4	深圳	100.9	119.5	1210.0
c5	沈阳	100.5	120.1	122.3
d.drop('c1')
	城市	环比	同比	定基
c2	上海	101.2	120.6	122.5
c3	广州	101.3	120.1	122.4
c4	深圳	100.9	119.5	1210.0
c5	沈阳	100.5	120.1	122.3
d.drop('环比',axis=1)

	城市	同比	定基
c1	北京	120.7	121.4
c2	上海	120.6	122.5
c3	广州	120.1	122.4
c4	深圳	119.5	1210.0
c5	沈阳	120.1	122.3

注意,当对DataFrame类型进行删除行轴索引操作时,因为axis默认为0,需要增加一个axis=1的指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值