Python学习笔记(6):Pandas的reindex方法

目录

  • 一、reindex方法

一、reindex方法

reindex的作用是对Series或DataFrame对象创建一个适应新索引的新对象。
以一个简单示例说明。

import pandas as pd
from pandas import Series, DataFrame
obj = Series([4.5, 7.2, -5.3, 3.6], index = ['d', 'b', 'a', 'c'])
#reindex用法示例
obj2 = obj.reindex(['a', 'b', 'c', 'd', 'e'])
obj2
输出:a   -5.3
b    7.2
c    3.6
d    4.5
e    NaN
dtype: float64

可以看到reindex方法重新设定了一组数据的索引,如果索引在原数据中没有匹配,则以NaN填充。

如果不想以NaN填充呢?可以用fill_value方法来设置。

obj.reindex(['a', 'b', 'c', 'd', 'e'], fill_value = 0)
输出:a   -5.3
b    7.2
c    3.6
d    4.5
e    0.0
dtype: float64

也可以用ffill方法实现前向填充,也就是补充的索引如果没有对应的数值,则取前一个索引的值填充。

obj3 = Series(['blue', 'purple', 'yellow'], index = [0, 2, 4])
obj3
输出:0      blue
2    purple
4    yellow
dtype: object

#使用ffill实现前向值填充
obj3.reindex(range(6), method = 'ffill')
输出:0      blue
1      blue
2    purple
3    purple
4    yellow
5    yellow
dtype: object

以上都是对Series的reindex用法,接下来看看DataFrame的reindex方法。
区别主要在于,DataFrame可以对index或columns使用reindex方法。

#DataFrame使用reindex方法
import numpy as np
frame = DataFrame(np.arange(9).reshape((3, 3)), index = ['a', 'c', 'd'], columns = ['Ohio', 'Texas', 'California'])
frame
输出:
    Ohio    Texas   California
a   0   1   2
c   3   4   5
d   6   7   8

frame2 = frame.reindex(['a', 'b', 'c', 'd'])
frame2
输出: 
    Ohio    Texas   California
a   0.0 1.0 2.0
b   NaN NaN NaN
c   3.0 4.0 5.0
d   6.0 7.0 8.0

states = ['Texas', 'Utah', 'California']
frame.reindex(columns = states)
输出:
    Texas   Utah    California
a   1   NaN 2
c   4   NaN 5
d   7   NaN 8

#对DataFrame使用ffill方法,书里的写法会报错,用如下写法是没问题的
frame.reindex(index = ['a', 'b', 'c', 'd'], columns = states).ffill()
输出:
    Texas   Utah    California
a   1.0 NaN 2.0
b   1.0 NaN 2.0
c   4.0 NaN 5.0
d   7.0 NaN 8.0

#标签索引loc方法(书中的'ix'方法已经不能使用了,loc方法等同原ix方法
frame.loc[['a', 'b', 'c', 'd'], states]
输出:
    Texas   Utah    California
a   1.0 NaN 2.0
b   NaN NaN NaN
c   4.0 NaN 5.0
d   7.0 NaN 8.0

假期最后一天。。。就写这么多了。。。

你可能感兴趣的:(Python学习笔记(6):Pandas的reindex方法)