我是靠谱客的博主 儒雅指甲油,这篇文章主要介绍python Dataframe iloc时一直报out-of-bounds 和 根据行索引取Dataframe的多行值,现在分享给大家,希望可以做个参考。
今天在用pandas时候遇到了Dataframe的iloc一直报out-of-bounds这个错,这个简单理解就是越界了。
1.普通情况
举个简单的例子:
复制代码
1
2
3
4
5
6
7
8
9
10
11import pandas as pd dataset=[[1,2.222,3,4,5],[2,None,None,None,5],[None,None,3,4,None],[1,2.5661,3,4,5.234]] df=pd.DataFrame(dataset) # 删除df中的一行 print("--------原始的df--------") print(df) print(df.iloc[1,5])
我先定义了一个数组并采用pandas转为DataFrame,然后采用iloc去取值,运行结果如下
这个例子很简单,我iloc了第5列,但实际没有,所以报错。
2.进阶
而我实现的功能较为复杂,是需要先删除掉一些行,再根据索引去取多行的值。这里调了半天才发现,iloc是取的相对位置,而不是根据索引取的行。
举例:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import pandas as pd dataset=[[1,2.222,3,4,5],[2,None,None,None,5],[None,None,3,4,None],[1,2.5661,3,4,5.234]] df=pd.DataFrame(dataset) # 删除df中的一行 print("--------原始的df--------") print(df) print("-----删除df中的index为1的行-------") df=df.drop([1]) print(df) print("-----采用iloc打印df的1-------") print(df.iloc[[1]]) # 根据索引进行打印 print("-----根据索引进行打印-------") print(df.iloc[[df.index.get_loc(2)]])
运行结果
从这里我们可以看出,当我们删除索引为1的行时,我们用iloc[1]实际取的是相对的第1行,真正根据索引去去要先采用
复制代码
1
2index=df.index.get_loc(2)#2是索引号
然后再用iloc[index]去取索引2对应的行。
3.根据行索引值取多行
先放源码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2020/12/11 20:18 # @Author : Lijuan Ren import numpy as np import pandas as pd #根据索引获得iloc的行号 def get_multi_row_by_index(dataset, index_list): datas_with_index = [] for i in range(len(index_list)): data = dataset.index.get_loc(index_list[i]) datas_with_index.append(data) return datas_with_index dataset=[[1,2.222,3,4,5],[2,None,None,None,5],[None,None,3,4,None],[1,2.5661,3,4,5.234]] df=pd.DataFrame(dataset) copy_df=np.copy(df) # 删除df中的一行 print("--------原始的df--------") print(df) print("-----删除df中的index为1的行-------") df=df.drop([1]) print(df) print("-----取索引为0,2的行-------") index_list=[0,2] iloc_index=get_multi_row_by_index(df, index_list) print(df.iloc[iloc_index])
运行结果
最后
以上就是儒雅指甲油最近收集整理的关于python Dataframe iloc时一直报out-of-bounds 和 根据行索引取Dataframe的多行值的全部内容,更多相关python内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复