pandas重新索引

#重新索引会更改DataFrame的行标签和列标签。重新索引意味着符合数据以匹配特定轴上的一组给定的标签。

#可以通过索引来实现多个操作 -

#重新排序现有数据以匹配一组新的标签。
#在没有标签数据的标签位置插入缺失值(NA)标记。
#示例

import pandas as pd
import numpy as np

N=20

df = pd.DataFrame({
   ‘A‘: pd.date_range(start=‘2016-01-01‘,periods=N,freq=‘D‘),
   ‘x‘: np.linspace(0,stop=N-1,num=N),
   ‘y‘: np.random.rand(N),
   ‘C‘: np.random.choice([‘Low‘,‘Medium‘,‘High‘],N).tolist(),
   ‘D‘: np.random.normal(100, 10, size=(N)).tolist()
})

#reindex the DataFrame
df_reindexed = df.reindex(index=[0,2,5], columns=[‘A‘, ‘C‘, ‘B‘])

print (df_reindexed)
#Python
#执行上面示例代码,得到以下结果 -

            A    C     B
0  2016-01-01  Low   NaN
2  2016-01-03  High  NaN
5  2016-01-06  Low   NaN
#Shell
#重建索引与其他对象对齐
#有时可能希望采取一个对象和重新索引,其轴被标记为与另一个对象相同。 考虑下面的例子来理解这一点。

#示例

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(10,3),columns=[‘col1‘,‘col2‘,‘col3‘])
df2 = pd.DataFrame(np.random.randn(7,3),columns=[‘col1‘,‘col2‘,‘col3‘])

df1 = df1.reindex_like(df2)
print df1
#Python
#执行上面示例代码,得到以下结果 -

          col1         col2         col3
0    -2.467652    -1.211687    -0.391761
1    -0.287396     0.522350     0.562512
2    -0.255409    -0.483250     1.866258
3    -1.150467    -0.646493    -0.222462
4     0.152768    -2.056643     1.877233
5    -1.155997     1.528719    -1.343719
6    -1.015606    -1.245936    -0.295275
#Shell
#注意 - 在这里,df1数据帧(DataFrame)被更改并重新编号,如df2。 列名称应该匹配,否则将为整个列标签添加NAN。

#填充时重新加注
#reindex()采用可选参数方法,它是一个填充方法,其值如下:

#pad/ffill - 向前填充值
#bfill/backfill - 向后填充值
#nearest - 从最近的索引值填充
#示例

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(6,3),columns=[‘col1‘,‘col2‘,‘col3‘])
df2 = pd.DataFrame(np.random.randn(2,3),columns=[‘col1‘,‘col2‘,‘col3‘])

# Padding NAN‘s
print df2.reindex_like(df1)

# Now Fill the NAN‘s with preceding Values
print ("Data Frame with Forward Fill:")
print df2.reindex_like(df1,method=‘ffill‘)
#Python
#执行上面示例代码时,得到以下结果 -

         col1        col2       col3
0    1.311620   -0.707176   0.599863
1   -0.423455   -0.700265   1.133371
2         NaN         NaN        NaN
3         NaN         NaN        NaN
4         NaN         NaN        NaN
5         NaN         NaN        NaN

Data Frame with Forward Fill:
         col1        col2        col3
0    1.311620   -0.707176    0.599863
1   -0.423455   -0.700265    1.133371
2   -0.423455   -0.700265    1.133371
3   -0.423455   -0.700265    1.133371
4   -0.423455   -0.700265    1.133371
5   -0.423455   -0.700265    1.133371
#Shell
#注 - 最后四行被填充了。

#重建索引时的填充限制
#限制参数在重建索引时提供对填充的额外控制。限制指定连续匹配的最大计数。考虑下面的例子来理解这个概念 -

#示例

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(6,3),columns=[‘col1‘,‘col2‘,‘col3‘])
df2 = pd.DataFrame(np.random.randn(2,3),columns=[‘col1‘,‘col2‘,‘col3‘])

# Padding NAN‘s
print df2.reindex_like(df1)

# Now Fill the NAN‘s with preceding Values
print ("Data Frame with Forward Fill limiting to 1:")
print df2.reindex_like(df1,method=‘ffill‘,limit=1)
#Python
#在执行上面示例代码时,得到以下结果 -

         col1        col2        col3
0    0.247784    2.128727    0.702576
1   -0.055713   -0.021732   -0.174577
2         NaN         NaN         NaN
3         NaN         NaN         NaN
4         NaN         NaN         NaN
5         NaN         NaN         NaN

#Data Frame with Forward Fill limiting to 1:
         col1        col2        col3
0    0.247784    2.128727    0.702576
1   -0.055713   -0.021732   -0.174577
2   -0.055713   -0.021732   -0.174577
3         NaN         NaN         NaN
4         NaN         NaN         NaN
5         NaN         NaN         NaN
#Shell
#注意 - 只有第7行由前6行填充。 然后,其它行按原样保留。

#重命名
#rename()方法允许基于一些映射(字典或者系列)或任意函数来重新标记一个轴。
#看看下面的例子来理解这一概念。

#示例

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.random.randn(6,3),columns=[‘col1‘,‘col2‘,‘col3‘])
print df1

print ("After renaming the rows and columns:")
print df1.rename(columns={‘col1‘ : ‘c1‘, ‘col2‘ : ‘c2‘},index = {0 : ‘apple‘, 1 : ‘banana‘, 2 : ‘durian‘})
#Python
#执行上面示例代码,得到以下结果 -

         col1        col2        col3
0    0.486791    0.105759    1.540122
1   -0.990237    1.007885   -0.217896
2   -0.483855   -1.645027   -1.194113
3   -0.122316    0.566277   -0.366028
4   -0.231524   -0.721172   -0.112007
5    0.438810    0.000225    0.435479

#After renaming the rows and columns:
                c1          c2        col3
apple     0.486791    0.105759    1.540122
banana   -0.990237    1.007885   -0.217896
durian   -0.483855   -1.645027   -1.194113
3        -0.122316    0.566277   -0.366028
4        -0.231524   -0.721172   -0.112007
5         0.438810    0.000225    0.435479
#Shell
#rename()方法提供了一个inplace命名参数,默认为False并复制底层数据。 指定传递inplace = True则表示将数据重命名。

原文地址:https://www.cnblogs.com/ggzhangxiaochao/p/9092117.html

时间: 2024-08-04 18:39:40

pandas重新索引的相关文章

利用python进行数据分析——pandas与索引

1. pandas包括series.dataframe Series Series是一维的数组型对象. Series包含了索引index和值value.比如说: DataFrame DataFrame是矩阵的数组表. DataFrame既有行索引也有列索引,它可以被视为一个共享相同索引的Series的dict.比如说: 2. pandas的索引? 2.1 普通索引.切片索引 在这个对象中,索引可以表达为: 注意1:通过索引获取数据,如果获取一个值,不显示索引:如果获取多个值,显示索引. 注意2:

pandas 数据索引与选取

我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列.区域.单元格.其对应使用的方法如下:一. 行,列 --> df[]二. 区域   --> df.loc[], df.iloc[], df.ix[]三. 单元格 --> df.at[], df.iat[] 下面开始练习: import numpy as np import pandas as pd df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), co

pandas.DataFrame 索引方法区别

有三种索引:ix,iloc,loc: 使用方法都是 __.ix[row, columns] 详细的见 pandas 文档. 需要注意的差别是: 1,ix方法 混合索引和位置下标(必须是整数),先考虑是否是在标签索引中,然后考虑是位置下标.如果是整数作为index,ix就按照索引标签选取.  loc方法按照标签,iloc方法按位置下标. 2,虽然都支持切片,单个选择也超出范围: 但是,单个赋值的时候,ix方法可以选择不再索引内的,类似字典的方式新建一个标签行或列. 一般情况最好明确使用标签还是位置

pandas层级索引1

层级索引(hierarchical indexing) 下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,第一个子list是外层索引,第二个list是内层索引. 示例代码: import pandas as pd import numpy as np ser_obj = pd.Series(np.random.randn(12),index=[ ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd',

第十五节 pandas建立时间索引

import pandas as pd pd.options.display.max_rows = 10 # 设置显示行数 df1 = pd.read_csv(r'E:\anacondatest\PythonData\PM25\Beijing_2009_HourlyPM25_created20140709.csv', encoding='gbk') # 将数据转换成时间戳类型 pd.Timestamp(df1["Date(LST)"][0]) # 建立datetimeindex对象 d

pandas索引的数据查找、排序和去重小结

由于Pandas的索引比较复杂,常常在使用过程中容易搞混,所以整理一份关于索引的查找.排序.去重的总结文档. import pandas as pd import numpy as np #定义DataFrame dict={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]} df=pd.DataFrame(dict,index=['one','two','three']) df .dataframe tbody tr th:only-of-type { vertical-

pandas索引操作

pandas的索引操作可以快速的完成多种功能. import pandas as pd import numpy as np 1. 首先pandas创建DataFrame df_1 = pd.DataFrame([['Jack','M',40],['Tony','M',20],['Mary','F',30],['Bob','M',25]], columns=['name','gender','age']) #列表创建DataFrame print('------ df_1是: ------')

python之pandas模块的基本使用(1)

一.pandas概述 pandas :pannel data analysis(面板数据分析).pandas是基于numpy构建的,为时间序列分析提供了很好的支持.pandas中有两个主要的数据结构,一个是Series,另一个是DataFrame. 二.数据结构 Series Series 类似于一维数组与字典(map)数据结构的结合.它由一组数据和一组与数据相对应的数据标签(索引index)组成.这组数据和索引标签的基础都是一个一维ndarray数组.可将index索引理解为行索引. Seri

《Python数据分析常用手册》一、NumPy和Pandas篇

一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 3.数据分析常用库的离线安装包(pip+wheels)(百度云):http://pan.baidu.com/s/1dEMXbfN 密码:bbs2 二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和