1. 索引和轴的变换
重新索引:
Series/DataFrame.reindex(index=None, **kwargs)
:index
:一个array-like
对象,给出了新的index
的label
method
:当新的label
的值缺失时,如何处理。参数值可以为:None
:不做任何处理,缺失地方填充NaN
'backfill'/'bfill'
:用下一个可用的值填充该空缺(后向填充)'pad'/'ffill'
:用上一个可用的值填充该空缺(前向填充)'nearest'
:用最近的可用值填充该空缺
copy
:一个布尔值,如果为True
,则返回一个新的Series
对象(即使传入的index
与原来的index
相同)level
:一个整数或者name
,在MultiIndex
的指定级别上匹配简单索引fill_value
:一个标量。指定缺失值的填充数据,默认为NaN
(如果该参数与method
同时出现,则以method
为主)limit
:一个整数,指定前向/后向填充时:如果有连续的k
个NaN
,则只填充其中limit
个。它与method
配合tolerance
:一个整数,用于给出在不匹配时,连续采用前向/后向/最近邻匹配的跨度的最大值。它与method
配合
对于
DataFrame
,多了关键字参数:columns
:一个array-like
对象,给出了新的columns
的label
对于
DataFrame
,如果.reindex()
只传入一个序列,则默认会重索引行label
。如果同时重索引行label
和列label
,则method
插值只能按照行来进行(即 0 轴)将列数据变成行索引(只对
DataFrame
有效,因为Series
没有列索引),其中:col label
变成index name
,列数据变成行label
:DataFrame.set_index(keys, drop=True, append=False, inplace=False,
verify_integrity=False)
keys
: 指定了一个或者一列的column label
。这些列将会转换为行index
drop
:一个布尔值。如果为True
,则keys
对应的列会被删除;否则这些列仍然被保留append
:一个布尔值。如果为True
,则原有的行索引将保留(此时一定是个多级索引);否则抛弃原来的行索引。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
verify_integrity
:一个布尔值。如果为True
,则检查新的index
是否有重复值。否则会推迟到检测过程到必须检测的时候。
reset_index
会将层次化的行index
转移到列中,成为新的一列。同时index
变成一个整数型的,从0开始编号:DataFrame.reset_index(level=None, drop=False, inplace=False,
col_level=0, col_fill='')
Series.reset_index(level=None, drop=False, name=None, inplace=False)
level
:一个整数、str
、元组或者列表。它指定了将从层次化的index
中移除的level
。如果为None
,则移除所有的level
drop
:一个布尔值。如果为True
,则并不会插入新的列。如果为False
,则插入新的列(由index
,组成,其列名为'index'
)。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
col_level
:如果列索引也是多层次的,则决定插入到列索引的哪个level
。col_fill
:如果列索引也是多层次的,则决定插入之后其他level
的索引如何命名的。默认情况下就是重复该index name
对于
Series
,name
就是插入后,对应的列label
丢弃某条轴上的一个或者多个
label
:Series/DataFrame.drop(labels[, axis, level, inplace, errors])
:labels
:单个label
或者一个label
序列,代表要被丢弃的label
axis
:一个整数,或者轴的名字。默认为 0 轴level
:一个整数或者level
名字,用于MultiIndex
。因为可能在多个level
上都有同名的label
。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
errors
:可以为'ignore'/'raise'
DataFrame
的.T
方法会对DataFrame
进行转置,使得行与列互换(行索引与列索引也互换)交换两个轴:
DataFrame/Series.swapaxes(axis1, axis2, copy=True)
交换多级索引的两个
level
:DataFrame/Series.swaplevel(i=-2, j=-1, axis=0, copy=True)
i/j
为两个level
的整数position
,也可以是name
字符串。
想修改轴
label
有两种方案:可以采用
Index.map(mapper)
方法。其中mapper
是个可调用对象,它对每个label
进行调用然后返回新的label
。该函数返回一个新的Index
对象。然后将其赋值给pandas
对象的.index/.columns
属性。调用
.rename
方法:Series.rename(index=None, **kwargs)
DataFrame.rename(index=None, columns=None, **kwargs)
index/columns
:一个标量、dict-like
、或者一个函数。- 标量:修改了
Series.name
属性。但是对于DataFrame
会抛出异常 dict-like
或者函数:应用于对应轴的label
上
- 标量:修改了
copy
:如果为True
,则拷贝底层数据(此时inplace=False
)inplace
:一个布尔值。如果为True
,则原地修改,此时忽略copy
参数。否则新创建对象。