精华内容
下载资源
问答
  • python reindex详解

    千次阅读 2019-07-10 20:58:23
    首先介绍reindex,它的作用是创建一个新对象,新对象的数据符合新的索引。示例如下所示 从上图可以看出,使用reindex后,索引进行了重排。如果某个索引值不存在,就会引入缺失值: 如果不想使用缺失值,...

    首先介绍reindex,它的作用是创建一个新对象,新对象的数据符合新的索引。示例如下所示

     

             从上图可以看出,使用reindex后,索引进行了重排。如果某个索引值不存在,就会引入缺失值:

            

    如果不想使用缺失值,可以通过fill_value参数填充默认值,如下所示

            

    同时也可以使用method选项,使用method时,可用的参数包括ffill(前向填充)和bfill(后向填充)。

     

    在使用method选项时,你可能会发现ffill或bfill填充的值与预期的值不符,如下图所示:

     

             本来认为‘o’索引填充的值应该是3,但上面填充的却是4,这是为什么呢?

            

             因为在reindex的括号内部使用method选项时:先按照索引的顺序排序好,然后再填充值,填充完成后再按照reindex里新索引的顺序进行排列。

     

    因此obj先按照a,b,c,d,o的顺序排列好,d的值是4, o的值就被前向填充成4了。

            

             同理,如果使用bfill参数,因为o后面没有值了,o的值就是NaN,而不是2。如下图所示

     

             但是如果使用.ffill()或.bfill(),就能够达到我们想要的效果:填充值与前向/后项值相同。如下图所示:

     

     

     

             同时需要注意的是,在使用method选项时,原数组里的索引必须是已经经过排序的,如果原索引是乱序的,会弹出如下错误

    index must be monotonic increasing or decreasing

     

             如下所示obj3的原索引未按顺序排列:

     

             如果此时使用method选项,就会报错:

     

             但使用.ffill()就不会有问题:

            

             使用method方式是旧python的做法,新版python中推荐使用.ffill()方式。

     

    通过reindex还可以选择特定的索引:

            

             对于DataFrame,reindex可以修改行索引或列索引。如果只传递一个序列,则会修改行索引:

     

             columns关键字就可以重新索引列。

            

             通过本文的学习,你是否学会了reindex的用法?

     

    展开全文
  • 如果一个DataFrame的index乱了,按正常的sort_index无法排序,则可以用reindex函数

    如果一个DataFrame的index乱了,按正常的sort_index无法排序,则可以用reindex函数

    import numpy as np
    import pandas as pd
    >>> randWeek=['Tues','Thur','Mon','Sat','Fri','Sun','Wed']
    >>> frame=pd.DataFrame(np.random.randn(7,3),columns=list('abc'),index=randWeek)
    >>> frame
                     a         b         c
        Tues  0.054086 -2.546081  0.051492
        Thur  0.232368 -0.937215  0.883313
        Mon  -1.004652  1.266954  0.321374
        Sat   2.003404  0.514108  0.640477
        Fri  -0.631527  0.939361 -0.013297
        Sun   0.492959 -0.171945  0.030827
        Wed  -0.334522 -0.334029  0.575805
    
    >>> normalWeek=['Mon','Tues','Wed','Thur','Fri','Sat','Sun']
    >>> frame.reindex(normalWeek)
                     a         b         c
        Mon  -1.004652  1.266954  0.321374
        Tues  0.054086 -2.546081  0.051492
        Wed  -0.334522 -0.334029  0.575805
        Thur  0.232368 -0.937215  0.883313
        Fri  -0.631527  0.939361 -0.013297
        Sat   2.003404  0.514108  0.640477
        Sun   0.492959 -0.171945  0.030827

    指定的list中的index可以比DataFrame中已有的index多或少

    >>> otherWeek1=['Tues','Wed','Thur','Fri','Sat','Sun']
    >>> frame.reindex(otherWeek1)
                     a         b         c
        Tues  0.054086 -2.546081  0.051492
        Wed  -0.334522 -0.334029  0.575805
        Thur  0.232368 -0.937215  0.883313
        Fri  -0.631527  0.939361 -0.013297
        Sat   2.003404  0.514108  0.640477
        Sun   0.492959 -0.171945  0.030827
    
    >>> otherWeek2=['Mon','Tues','Wed','Thur','Fri','Sat','Sun','lalala']
    >>> frame.reindex(otherWeek2)
                       a         b         c
        Mon    -1.004652  1.266954  0.321374
        Tues    0.054086 -2.546081  0.051492
        Wed    -0.334522 -0.334029  0.575805
        Thur    0.232368 -0.937215  0.883313
        Fri    -0.631527  0.939361 -0.013297
        Sat     2.003404  0.514108  0.640477
        Sun     0.492959 -0.171945  0.030827
        lalala       NaN       NaN       NaN

    人生苦短,我用python~

    展开全文
  • numpy中reindex函数用法

    2021-01-24 21:58:30
    import numpy as np import pandas as pd ...# series reindex s1 = Series([1, 2, 3, 4], index=['A', 'B', 'C', 'D']) print(s1) ''' A 1 B 2 C 3 D 4 dtype: int64 ''' # 重新指定 index, 多出来的index,可.
    import numpy as np
    import pandas as pd
    from pandas import Series, DataFrame
    
    np.random.seed(666)
    
    # series reindex
    s1 = Series([1, 2, 3, 4], index=['A', 'B', 'C', 'D'])
    print(s1)
    '''
    A    1
    B    2
    C    3
    D    4
    dtype: int64
    '''
    
    
    # 重新指定 index, 多出来的index,可以使用fill_value 填充
    print(s1.reindex(index=['A', 'B', 'C', 'D', 'E'], fill_value = 10))
    '''
    A     1
    B     2
    C     3
    D     4
    E    10
    dtype: int64
    '''
    
    s2 = Series(['A', 'B', 'C'], index = [1, 5, 10])
    print(s2)
    '''
    1     A
    5     B
    10    C
    dtype: object
    '''
    
    # 修改索引,
    # 将s2的索引增加到15个
    # 如果新增加的索引值不存在,默认为 Nan
    print(s2.reindex(index=range(15)))
    '''
    0     NaN
    1       A
    2     NaN
    3     NaN
    4     NaN
    5       B
    6     NaN
    7     NaN
    8     NaN
    9     NaN
    10      C
    11    NaN
    12    NaN
    13    NaN
    14    NaN
    dtype: object
    '''
    
    # ffill : foreaward fill 向前填充,
    # 如果新增加索引的值不存在,那么按照前一个非nan的值填充进去
    print(s2.reindex(index=range(15), method='ffill'))
    '''
    0     NaN
    1       A
    2       A
    3       A
    4       A
    5       B
    6       B
    7       B
    8       B
    9       B
    10      C
    11      C
    12      C
    13      C
    14      C
    dtype: object
    '''
    
    # reindex dataframe
    df1 = DataFrame(np.random.rand(25).reshape([5, 5]), index=['A', 'B', 'D', 'E', 'F'], columns=['c1', 'c2', 'c3', 'c4', 'c5'])
    print(df1)
    '''
             c1        c2        c3        c4        c5
    A  0.700437  0.844187  0.676514  0.727858  0.951458
    B  0.012703  0.413588  0.048813  0.099929  0.508066
    D  0.200248  0.744154  0.192892  0.700845  0.293228
    E  0.774479  0.005109  0.112858  0.110954  0.247668
    F  0.023236  0.727321  0.340035  0.197503  0.909180
    '''
    
    # 为 dataframe 添加一个新的索引
    # 可以看到 自动 扩充为 nan
    print(df1.reindex(index=['A', 'B', 'C', 'D', 'E', 'F']))
    ''' 自动填充为 nan
             c1        c2        c3        c4        c5
    A  0.700437  0.844187  0.676514  0.727858  0.951458
    B  0.012703  0.413588  0.048813  0.099929  0.508066
    C       NaN       NaN       NaN       NaN       NaN
    D  0.200248  0.744154  0.192892  0.700845  0.293228
    E  0.774479  0.005109  0.112858  0.110954  0.247668
    F  0.023236  0.727321  0.340035  0.197503  0.909180
    '''
    
    # 扩充列, 也是一样的
    print(df1.reindex(columns=['c1', 'c2', 'c3', 'c4', 'c5', 'c6']))
    '''
             c1        c2        c3        c4        c5  c6
    A  0.700437  0.844187  0.676514  0.727858  0.951458 NaN
    B  0.012703  0.413588  0.048813  0.099929  0.508066 NaN
    D  0.200248  0.744154  0.192892  0.700845  0.293228 NaN
    E  0.774479  0.005109  0.112858  0.110954  0.247668 NaN
    F  0.023236  0.727321  0.340035  0.197503  0.909180 NaN
    '''
    
    # 减小 index
    print(s1.reindex(['A', 'B']))
    ''' 相当于一个切割效果
    A    1
    B    2
    dtype: int64
    '''
    
    print(df1.reindex(index=['A', 'B']))
    ''' 同样是一个切片的效果
             c1        c2        c3        c4        c5
    A  0.601977  0.619927  0.251234  0.305101  0.491200
    B  0.244261  0.734863  0.569936  0.889996  0.017936
    '''
    
    # 对于一个 serie 来说,可以使用 drop,来丢掉某些 index
    print(s1.drop('A'))
    ''' 就只剩下 三个了
    B    2
    C    3
    D    4
    dtype: int64
    '''
    
    # dataframe drop(A) 直接去掉一行
    print(df1.drop('A', axis=0))
    ''' axis 默认 是 行
             c1        c2        c3        c4        c5
    B  0.571883  0.254364  0.530883  0.295224  0.352663
    D  0.858452  0.379495  0.593284  0.786078  0.949718
    E  0.556276  0.643187  0.808664  0.289422  0.501041
    F  0.737993  0.286072  0.332714  0.873371  0.421615
    '''
    
    print(df1.drop('c1', axis=1))
    ''' 将 c1 的列 去掉
             c2        c3        c4        c5
    A  0.326681  0.247832  0.601982  0.145905
    B  0.373961  0.393819  0.439284  0.926706
    D  0.558490  0.617851  0.461280  0.373102
    E  0.030434  0.566498  0.383103  0.739243
    F  0.982220  0.989826  0.957863  0.411514
    '''
    

     

    展开全文
  • Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的...原文地址:Python pandas.DataFrame.reindex函数方法的使用 ...

    Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.reindex方法的使用。
    原文地址:Python pandas.DataFrame.reindex函数方法的使用

    展开全文
  • import pandas as pd from pandas import Series,DataFrame print('用一维数组生成Series') x=Series([1,2,3,4]) print(x) """ 用一维数组生成Series 0 1 1 2 ...print(x.index) #RangeIndex(start=0, stop=4, step=1)...
  • y= x.reindex(['a','b','c','d']) print(y) """ a 4.0 b 7.0 c 5.0 d NaN dtype: float64 """ ## fill_value 指定不存在元素NaN的默认值 print(x.reindex(['a','b','c','d']), fill_value = 0) """ a 4 b 7 c 5 d 0...
  • python 常用函数总结

    2019-07-17 16:58:15
    python 常用函数总结 本文主要是pandas常用函数的总结: 1 import语句 pandas as pd import numpy as np import matplotlib.pyplot as plt import datetime import re 2 文件读取 df = pd.read_csv(path=‘file.csv...
  • Python 常用函数方法
  • DataFrame.dot(self, other)计算DataFrame与其他之间的矩阵...它也可以在Python> = 3.5中使用。self @ other参数:other : Series,DataFrame或类似数组用于计算矩阵乘积的另一个对象。返回:Series或DataFrame如...
  • Python pandas常用函数详解

    千次阅读 2018-08-18 10:16:32
    本文研究的主要是pandas常用函数,具体介绍如下。 1 import语句 1 2 3 4 5 import pandas as pd import numpy as np import matplotlib.pyplot as plt import ...
  • 利用python做数据分析(六)-reindex

    万次阅读 多人点赞 2016-11-07 16:50:33
    参考文档:...http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.htmlDataFrame.reindex(index=None, columns=None, **kwargs) reindex 函数
  • 一、reindex函数的参数 参数 说明 index 用作索引的新序列。即可以是Index实例,也可以是其他序列型的Python数据结构。Index会被完全使用,就像没有任何复制一样 method 插值...
  • 事情的起因要从昨天说起,昨天写了个函数,对传入的 df做一些计算,大概长这样: def summary2_cal1(df): df1 = df.groupby([...]).agg({...}) df['CTAU'] = ' ' df2 = df.groupby([...]).agg({...}) df_part1 =...
  • Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集...原文地址:Python pandas.DataFrame.reindex_like函数方法的使用 ...
  • python 数据处理函数

    2017-11-15 23:11:38
    用于对整组数据进行快速运算的标准数学函数(无需编写循环)。用于读写磁盘数据的工具以及用于操作内存映射文件的工具。线性代数、随机数生成以及傅里叶变换功能。用于集成C、C++、Fortran等语言编写的代码的工具
  • python pandas常用函数学习

    千次阅读 2018-09-05 09:52:01
    从网上看的一些资料学习一下,有的内容是直接从其他文章中粘贴过来的。 pandas 有两个主要的数据结构:Series 和 DataFrame: ...将 Python 数组转换成 Series 对象:(当没有显示指定索引的时候,Series 自动...
  • Python中,我们的操作如下: import pandas as pd # Reading data locally df = pd.read_csv('/Users/al-ahmadgaidasaad/Documents/d.csv') # Reading data from web df = pd.read_csv(data_url) 为了读取本地CSV...
  • /usr/bin/env python # -*- coding:utf-8 -*- import pandas as pd import numpy as np def main(): dates = pd.date_range("20180301", periods=8) df = pd.DataFrame(np.random.randn(8, 5), index=...
  • 目录 6.1 => Pandas的数据结构 ...你可以使用pandas的方法reindexreindex可以创建一个新的对象,并根据新的索引重新排序: In [2]: obj = pd.Series([1, 2, 3, 4], index = ['d', 'b', 'a', 'c']) In [3

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,011
精华内容 1,204
关键字:

pythonreindex函数

python 订阅