首页 > 其他分享 >pandas-重新索引

pandas-重新索引

时间:2023-09-01 23:11:31浏览次数:42  
标签:index 01 df DataFrame 索引 重新 print pandas

pandas-重新索引

目录

reindex()

DataFrame.reindex(self, labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)

支持两种调用
- (index=index_labels, columns=column_labels, ...)
- (labels, axis={'index', 'columns'}, ...)

创建一个新索引并重新索引该数据框。默认情况下,将分配新索引中在数据框中没有对应记录的值NaN

import pandas as pd
import numpy as np
N=6
df = pd.DataFrame({'A': pd.date_range(start='2023-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()
                  })

print(df)

#           A    x         y       C           D
#0 2023-01-01  0.0  0.925854    High  104.851562
#1 2023-01-02  1.0  0.103372     Low  100.870139
#2 2023-01-03  2.0  0.667730  Medium   96.781621
#3 2023-01-04  3.0  0.149160  Medium   98.100630
#4 2023-01-05  4.0  0.606853    High   87.979547
#5 2023-01-06  5.0  0.450098     Low  104.103565

# DataFrame重建索引
df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print(df_reindexed)


#           A       C   B
#0 2023-01-01    High NaN
#2 2023-01-03  Medium NaN
#5 2023-01-06     Low NaN

通过将值传递给关键字来填充缺少的值fill_value

import pandas as pd
import numpy as np
index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
df = pd.DataFrame({'http_status': [200, 200, 404, 404, 301],
                   'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
                   index=index)
print(df)
#           http_status  response_time
#Firefox            200           0.04
#Chrome             200           0.02
#Safari             404           0.07
#IE10               404           0.08
#Konqueror          301           1.00

new_index = ['Safari', 'Iceweasel', 'QQ', 'IE10','Chrome']
df1=df.reindex(index=new_index,fill_value='missing')
print( df1)


#          http_status response_time
#Safari            404          0.07
#Iceweasel     missing       missing
#QQ            missing       missing
#IE10              404          0.08
#Chrome            200          0.02

set_index( )

重新设置一个索引

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
keys:列标签或列标签/数组列表,需要设置为索引的列

drop:默认为True,删除用作新索引的列

append:是否将列追加到现有索引,默认为False。

inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False。

verify_integrity:检查新索引的副本。否则,请将检查推迟到必要时进行。将其设置为false将提高该方法的性能,默认为false。
import pandas as pd
import numpy as np

df = pd.DataFrame({'month': [1, 4, 7, 10],
                    'year': [2012, 2014, 2013, 2014],
                    'sale': [55, 40, 84, 31]})
print(df)
#   month  year  sale
#0      1  2012    55
#1      4  2014    40
#2      7  2013    84
#3     10  2014    31

df1=df.set_index('month')
print(df1)

#       year  sale
#month
#1      2012    55
#4      2014    40
#7      2013    84
#10     2014    31
# 使用‘year’和‘month’列创建一个MultiIndex:

df2=df.set_index(['year', 'month'])
print(df2)

            sale
year month
2012 1        55
2014 4        40
2013 7        84
2014 10       31

reset_index()

创建一个新的 DataFrame,并将索引列作为新的一列添加到 DataFrame 中

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='')
import pandas as pd
import numpy as np

df = pd.DataFrame([('bird', 389.0),
                   ('bird', 24.0),
                   ('mammal', 80.5),
                   ('mammal', np.nan)],
                  index=['falcon', 'parrot', 'lion', 'monkey'],
                  columns=('class', 'max_speed'))
 
print(df)
#         class  max_speed
#falcon    bird      389.0
#parrot    bird       24.0
#lion    mammal       80.5
#monkey  mammal        NaN

print(df)
df1=df.reset_index()
print(df1)


#    index   class  max_speed
#0  falcon    bird      389.0
#1  parrot    bird       24.0
#2    lion  mammal       80.5
#3  monkey  mammal        NaN


# 可以使用drop参数来避免将旧索引添加为列
df2=df.reset_index(drop=True)
print(df2)

#    class  max_speed
#0    bird      389.0
#1    bird       24.0
#2  mammal       80.5
#3  mammal        NaN

参考资料

https://www.cjavapy.com/article/701/

https://www.cjavapy.com/article/701/

标签:index,01,df,DataFrame,索引,重新,print,pandas
From: https://www.cnblogs.com/tian777/p/17673035.html

相关文章

  • pandas-修改列行名称
    pandas-修改列行名称目录pandas-修改列行名称行和列名全部修改columns属性index属性rename函数rename_axis()前缀后缀add_prefix()add_suffix()参考资料行和列名全部修改columns属性importpandasaspddf=pd.DataFrame({'a':[1,2,3],'b':[4,5,6],......
  • ORA-28007:无法重新使用口令
    错误信息【汉】ORA-28007:无法重新使用口令【英】ORA-28007:thepasswordcannotbereused环境介绍操作系统数据库版本备注CentOS7Oracle11G报错在修改用户的密码时报错。原因报错的原因主要是有配置密码的profile文件,其主要是一些资源限制等参数。跟本次报错有关的参数是:PASSW......
  • 开心档-软件开发入门之MongoDB 高级索引
     作者简介:每天分享MongoDB教程的学习经验、和学习笔记。  座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。个人主页:iOS开发上架的主页前言本章将会讲解在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组tags创建索引时,会为music、cric......
  • 怎么建立和使用空间索引?
    0.为什么需要空间索引:https://www.cnblogs.com/2008nmj/p/14291508.html(提高空间查询效率)那么建立和使用空间索引呢?第一步:空间分割。 ......
  • pandas操作excel表格
    点击查看代码importpandasaspdfromtqdmimporttqdmfile1=r"files/1.xls"file2=r"files/2.xls"df_File1=pd.read_excel(file1,sheet_name='keyWord',keep_default_na=False)key_column=df_File1['key'].fillna('......
  • 对话谷歌首席技术官肖恩,搜索引擎的里程碑,来看看搜索引擎界的大哥Algolia的“快、准、
    原创|文BFT机器人人物背景Character BackgroundSeanMullaney是Algolia(端到端人工智能搜索和发现平台)的首席技术官,也是前Stripe和谷歌高管,拥有扩展工程组织、开发人工智能驱动的搜索和发现工具以及在全球范围内发展API优先解决方案的背景。在Algolia,他负责监督仅次于谷歌的第......
  • Python列表的索引和切片
    Python列表的索引和切片使用及语法如下:列表索引:使用方括号([])来访问列表中的元素。索引从0开始,最左边的元素的索引为0,依次递增。负数索引从最右边的元素开始,最右边的元素的索引为-1,依次递减。示例:my_list=['a','b','c','d']print(my_list[0])#输出'a'print(my......
  • MySQL数据库索引
    为什么使用索引?在无索引的情况下,MySQL会扫描整张表来查找符合sql条件的记录,其时间开销与表中数据量呈正相关。对关系型数据表中的某些字段建索引可以极大提高查询速度(当然,不同字段是否selective会导致这些字段建立的索引对查询速度的提升幅度不同,而且索引也并非越多越好,因为写入或......
  • Android 重新定义文件类型 解决neverallow的问题
    添加权限后编译报错,neverallowxxx跟本原因是赋予的权限过⼤,缩⼩范围即可,解决⽅法:缩⼩范围(声明和指定具体需要访问的节点)后即可编译通过。1.思路敏感权限的特征:log中带有c512,c768字样试着在untrusted_app.te中添加了allowuntrusted_appaudio_device:chr_file{open......
  • 创建联合唯一索引的sql
    删除索引:DROPINDEXidx_ruleId_cityIdONdetail_price;DROPINDEX索引名称ON表名;创建联合唯一索引:ALTERTABLEdetail_priceADDuniqueINDEXidx_ruleId_cityId(rule_id,city_id);ALTERTABLE表名ADDuniqueINDEX索引名称(字段1,字段2);(如果表中已经有重复的记录,这时......