set_index,reset_index和reindex

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

 

以上,记录本人学习过程。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值