首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pandas知识点-索引和切片操作

索引和切片操作是最基本最常用的数据处理操作,Pandas中的索引和切片操作基于Python的语言特性,支持类似于numpy中的操作,也可以使用行标签、列标签以及行标签与列标签的组合来进行索引和切片操作...第二种方式除了支持英文的索引名,也支持中文的索引名,但是如果英文的索引名与Python关键字(如class,list)同名,会报错,只能用第一种方式来取数据。 2. 读取一行数据 ?...loc属性是基于索引名来获取数据的,在loc中的行索引和列索引都要使用索引名,iloc属性是基于数值索引来获取数据的,在iloc中的行索引和列索引都要使用数值索引。...loc中传入需要切片的行索引和列索引的索引名,iloc中传入需要切片的行索引和列索引的数值索引范围。...以上就是Pandas中的索引和切片基本操作介绍,如果需要获取数据和代码,可以点击关注公众号“Python碎片”,然后在后台回复“pandas03”关键字获取本文代码和数据。

2.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    气象处理技巧—时间序列处理2

    下面先导入这个做实验的再分析资料: import xarray as xr import numpy as np import pandas as pd file=r'F:\aaaa\air.mon.mean.nc...下栏使用的索引时间是字符串格式,以日为单位,程序会自动识别到相同的时间 loc切片遵循最终结果与索引对应原则,比如下面程序,右端要求取到1949年12月,则最终结果有1949年12月,左闭右闭 loc切片与列表切片类似...,拥有切片步长参数,可以按照切片步长跳着跳着切取 data=ds.time.loc['1948-01-01':'1949-12-01'] data data=ds.time.loc['1948-01...我们要求仅返回12月的数据,怎么进行呢,最先想到的,就是使用步长为12,每十二个月进行一次切片: data=ds.time.loc['1949-12-01'::12] data 在实验中,我们要求仅返回...没有的,通过不同的关键字,实现模糊搜索。

    84911

    pandas | 如何在DataFrame中通过索引高效获取数据?

    所以DataFrame当中也为我们封装了现成的行索引的方法,行索引的方法一共有两个,分别是loc,iloc。这两种方法都可以查询某一行,只是查询的参数不同,本质上没有高下之分,大家可以自由选择。..., 'F', 'M', 'M']} df = pd.DataFrame(data) ?...但是索引对应的切片出来的结果是闭区间,这一点和Python通常的切片用法不同,需要当心。 另外,loc是支持二维索引的,也就是说我们不但可以指定行索引,还可以在此基础上指定列。...说白了我们可以选择我们想要的行中的字段。 ? 列索引也可以切片,并且可以组合在一起切片: ? iloc iloc从名字上来看就知道用法应该和loc不会差太大,实际上也的确如此。...我个人也没有什么太好的办法,只能熟能生巧了,多用几次就记住了。

    13.6K10

    Pandas 2.2 中文官方教程和指南(十一·二)

    使用标签 'a':'f' 的切片对象(请注意,与通常的 Python 切片相反,在索引中同时包括起始和停止点!请参阅 使用标签进行切片 和 端点是包含的。)...规范中的任何轴访问器都可以是空切片:。省略规范中的轴被假定为:,例如p.loc['a']等同于p.loc['a', :]。...每个请求的标签必须在索引中,否则将引发KeyError。在切片时,如果存在于索引中,则起始边界和停止边界都将包括。整数是有效标签,但它们指的是标签而不是位置。 .loc属性是主要访问方法。...具有标签'a':'f'的切片对象(请注意,与通常的 Python 切片相反,当存在于索引中时,起始和停止都包括在内!请参见使用标签切片)。 一个布尔数组。...c 0 6 11 f c 1 2 注意 请注意,in和not in在 Python 中进行评估,因为numexpr没有这个操作的等效操作。

    25210

    pandas学习-索引-task13

    ,则会取出对应索引 位置 的值,注意这里的整数切片同 Python 中的切片一样不包含右端点: print(s[1:-1:2]) # 3    b # 2    d # dtype: object **...[5:3] df_loc_slice_demo.loc[3:5] # 没有返回,说明不是整数位置切片  【d】 * 为布尔列表  在实际的数据处理中,根据条件来筛选行是极其常见的,此处传入 loc 的布尔列表与...'] # 'Female' 由于函数无法返回如 start: end: step 的切片形式,故返回切片时要用 slice 对象进行包装: df_demo.loc[lambda x: slice('Gaojuan...iloc索引器 iloc 的使用与 loc 完全类似,只不过是针对位置进行筛选,在相应的 * 位置处一共也有五类合法对象,分别是:整数、整数列表、整数切片、布尔列表以及函数,函数的返回值必须是前面的四类合法对象中的一个...print(df_ex.loc[idx[:'A', 'b':], idx['E':, 'e':]]) # Big          E     F    # Small        e  f  e

    92300

    Pandas 2.2 中文官方教程和指南(十一·一)

    一个带有标签 'a':'f' 的切片对象(请注意,与通常的 Python 切片相反,开始和停止都包括在内,当存在于索引中时!请参阅使用标签切片和端点是包含的。)...每个要求的标签必须在索引中,否则将引发KeyError。在切片时,如果存在于索引中,则起始边界和停止边界都包括。整数是有效的标签,但它们指的是标签而不是位置。 .loc属性是主要的访问方法。...一个带有标签'a':'f'的切片对象(请注意,与通常的 Python 切片相反,当索引中存在时,起始和停止都包括在内!请参见使用标签切片)。 一个布尔数组。...['a', 'A'] Out[61]: 0.13200317033032932 使用标签切片 使用切片与.loc一起使��时,如果起始和停止标签都存在于索引中,则返回两者之间(包括它们)的元素: In...c 0 6 11 f c 1 2 注意 请注意,in和not in在 Python 中进行评估,因为numexpr没有此操作的等效操作。

    40710

    数据分析索引总结(中)Pandas多级索引

    作者:闫钟峰,Datawhale优秀学习者 寄语:本文介绍了创建多级索引、多层索引切片、多层索引中的slice对象、索引层的交换等内容。 创建多级索引 1....() 根据索引排序后不再报出性能警告 df_using_mul.sort_index().loc['C_2','street_5'] 当不排序时,不能使用多层切片 df_using_mul.loc[('...df_using_mul.sort_index().loc[[('C_2','street_7'),'C_3']] 上边不会报错,但结果与预期不一样,是由于第一层索引没有以元组('C_3','street...(select * from df_s where (Upper>'B' or D_d>0.3) ) # 如果不使用连接等手段, sql无法实现类似的对列名的筛选---特别地,sql中没有层级索引 接下来使用...pd.IndexSlice[df_s.sum()>4] 分解开来看--行的筛选,注意观察发现,最终结果没有第一次行索引为A的, 但下边的结果中第一层索引为A的有等于True的--这是因为前边还有个slice

    4.6K20

    【Pandas】已完美解决:AttributeError: ‘DataFrame‘ object has no attribute ‘ix‘

    try: result = df.ix[0, 'B'] except AttributeError as e: print(f"错误:{e}") 这段代码会输出: 错误...:'DataFrame' object has no attribute 'ix' 四、正确代码示例(结合实战场景) 在较新版本的Pandas中,我们可以使用 .loc 或 .iloc 来替代 ix。....使用 .loc 选择行和列 # 使用.loc选择第一行和第二列('B'列) result = df.loc[0, 'B'] print(result) # 输出:4 使用 .iloc 选择行和列...选择前两行和列'A'、'B' selected_data = df.loc[:1, ['A', 'B']] # 注意这里的切片:1意味着选取索引为0和1的行,但不包括索引为2的行 print(...selected_data) 输出: A B 0 1 4 1 2 5 (注意:上面的切片:1实际上包括了索引为0和1的行,因为切片是左闭右开的) 五、注意事项 在编写Pandas代码时

    1.5K10

    Pandas部分应掌握的重要知识点

    索引器中括号内行列下标的位置上都允许使用切片和花式索引,下例中行使用切片,列使用花式索引。 注意:下面的3:5表示下标为3和4的两行,[0,2]表示下标为0和2的两列。...索引器中括号内行列下标的位置上都允许使用切片和花式索引,下例中行使用切片,列使用花式索引。...team.loc[3:4,["name","Q1"]] 特别提醒,虽然上述两种通用写法的输出相同,但原理不同: ① iloc索引器的切片不包含终值,所以team.iloc[3:5,[0,2]]中不包含下标为...5的行; ② loc索引器的切片却包含终值,所以team.loc[3:4,[0,2]]中却包含行标签为4的行; ③ 同样是整数,在iloc索引器中将被解读为行/列下标,而在loc索引器中将被解读为行...'group': ['Accounting', 'Engineering', 'Engineering', 'HR',np.NaN]}) df3 #注意Tom目前没有所属部门

    4700

    盘一盘 Python 系列 4 - Pandas (上)

    因此在存储 df 的时候,如果 df.index 没有特意设定,记住要在 to_csv() 中把 index 设置为 False。...来切片单列 用 [] 来切片单列或多列 基于标签的 loc 基于位置的 iloc 切片 index: 用 [] 来切片单行或多行 基于标签的 loc 基于位置的 iloc 切片 index 和...情况 3 用中括号 [] 加「位置」,位置 i:i+1 有前闭后开的性质。如果要获取第 i+1 行,需要用 i:i+1。 情况 4 用中括号 [] 加「标签」,标签没有前闭后开的性质。...原因是 Python 会把 df['idx_i'] 当成切片 columns,然后发现属性中没有 'idx_i' 这一个字符,会报错的。 个人建议,只用 loc 和 iloc。...情况 1 用中括号 [] 加「位置」,情况 2 用中括号 [] 加「标签」,情况 3 基于标签 loc,情况 4 基于位置 iloc。

    6.3K52

    mmap:Python内存映射文件操作

    示例如下: import mmap with open('英文文档.txt','r') as f: with mmap.mmap(f.fileno(),0,access=mmap.ACCESS_READ...10)) print(m[:-10]) 运行之后,效果如下: 这里读写会根据文件指针进行移动,比如开始读10个字符,那么第2次读就会接着11个字符开始在读,不会返回起点,而通过切片或者...write(写文件) 写文件比较简单,这里我们直接看一段代码: import mmap word = b'The' with open('英文文档.txt', 'r+') as f: with...mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_WRITE) as m: loc = m.find(word) m[loc:loc...+ len(word)] = b'lyj' print(m.read()) 运行之后,首字母The,就被我们替换成"lyj"了,效果如下: 当然,这里除了切片写入之外,也可以使用

    36141
    领券