1.set_index()
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
append添加新索引,drop为False,inplace为True时,索引将会还原为列
2.reset_index
可以还原索引,重新变为默认的整型索引
3.reindex
reindex更多的不是修改pandas对象的索引,而只是修改索引的顺序,如果修改的索引不存在就会使用默认的None代替此行。且不会修改原数组,要修改需要使用赋值语句。
import numpy as np
import pandas as pd
from pandas import *
from numpy import *
data_1=DataFrame(np.arange(9).reshape(3,3),index=list("ABC"),columns=list("xyz"))
print(data_1)
# =============================================================================
# x y z
# A 0 1 2
# B 3 4 5
# C 6 7 8
# =============================================================================
data_1.set_index("z",inplace=True)
print(data_1)
# =============================================================================
# x y
# z
# 2 0 1
# 5 3 4
# 8 6 7
# =============================================================================
data_1.reset_index(inplace=True)
print(data_1)
# =============================================================================
# z x y
# 0 2 0 1
# 1 5 3 4
# 2 8 6 7
# =============================================================================
data_2=data_1.reindex(columns=list("wxyz"))
print(data_2)
# =============================================================================
# w x y z
# 0 NaN 0 1 2
# 1 NaN 3 4 5
# 2 NaN 6 7 8
# =============================================================================
reindex的一些参数:
参数 说明
method 插值填充方法
fill_value 引入的缺失数据值
limit 填充间隙
copy 如果新索引与就的相等则底层数据不会拷贝。默认为True(即始终拷贝)
level 在多层索引上匹配简单索引
#DataFrame.reindex(index=None, columns=None, **kwargs)
import pandas as pd
df_1=pd.Series([10,9,8,7],index=list("abcd"))
print(df_1)
#a 10
#b 9
#c 8
#d 7
#dtype: int64
df_2=df_1.reindex(list("abcde"))
print(df_2)
#a 10.0
#b 9.0
#c 8.0
#d 7.0
#e NaN
#dtype: float64
#fill_value
df_3=df_1.reindex(list("abcdef"),fill_value=0)
print(df_3)
#a 10
#b 9
#c 8
#d 7
#e 0
#f 0
#dtype: int64
#method选项来控制填充值或内插值
#method : {None, ‘backfill’/’bfill’, ‘pad’/’ffill’, ‘nearest’}, optional。
#ffill/pad 向前或进位填充,bfill/backfill 向后或进位填充
df_4=pd.Series(["a","b","c"],index=[0,2,4])
print(df_4)
#0 a
#2 b
#4 c
#dtype: object
df_5=df_4.reindex(list(range(6)),method="ffill")
print(df_5)
#0 a
#1 a
#2 b
#3 b
#4 c
#5 c
#dtype: object
df_6=df_4.reindex(list(range(6)),method="bfill")
print(df_6)
#0 a
#1 b
#2 b
#3 c
#4 c
#5 NaN
#dtype: object
以上,记录本人学习过程。