pandas实现按行选择的示例代码

目录
  • 1.自定义行索引
  • 2. 按普通索引选择数据
    • 2.1 按普通索引选择单行数据
    • 2.2 按行索引选择多行数据
  • 3.按位置索引选择数据
    • 3.2 按位置索引选择多行数据
  • 4.选择连续多行数据
  • 5.选择满足条件的行
    • 5.1单个条件选择
    • 5.2 多个条件选择
      • 5.2.1 多个条件是且的关系
      • 5.2.2 多个条件是或的关系

本文所用到的Excel表格内容如下:

1.自定义行索引

dataframe读取Excel表格时是由自定义行索引的。这里为了展示效果,先进行自定义行索引的操作

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
print('设置索引前:')
print(df)
print('设置索引后:')
df.index = ['一', '二', '三', '四', '五']
print(df)

result:
设置索引前:
   区域   省份  城市         时间  指标     地址    权重      字符
0  东北   辽宁  大连 2019-09-06  12  “123“  0.78  u"123"
1  西北   广东  西安 2019-09-07  87  “124“  0.65  u"124"
2  华南   北京  深圳 2019-09-08  87  “125“  0.34  u"125"
3  华北   湖北  北京 2019-09-09  45  “126“  1.23  u"126"
4  华中  黑龙江  武汉 2019-09-10  21  “127“  8.90  u"127"
设置索引后:
   区域   省份  城市         时间  指标     地址    权重      字符
一  东北   辽宁  大连 2019-09-06  12  “123“  0.78  u"123"
二  西北   广东  西安 2019-09-07  87  “124“  0.65  u"124"
三  华南   北京  深圳 2019-09-08  87  “125“  0.34  u"125"
四  华北   湖北  北京 2019-09-09  45  “126“  1.23  u"126"
五  华中  黑龙江  武汉 2019-09-10  21  “127“  8.90  u"127"

2. 按普通索引选择数据

这里说一下,行普通索引实际上就是行名。为了行文方便,后续一律称普通索引。

2.1 按普通索引选择单行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
df.index = ['一', '二', '三', '四', '五']
print(df.loc['一'])

result:
区域                     东北
省份                     辽宁
城市                     大连
时间    2019-09-06 00:00:00
指标                     12
地址                  “123“
权重                   0.78
字符                 u"123"
Name: 一, dtype: object

2.2 按行索引选择多行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
df.index = ['一', '二', '三', '四', '五']
print(df.loc[['一', '三', '四']])

result:
   区域  省份  城市         时间  指标     地址    权重      字符
一  东北  辽宁  大连 2019-09-06  12  “123“  0.78  u"123"
三  华南  北京  深圳 2019-09-08  87  “125“  0.34  u"125"
四  华北  湖北  北京 2019-09-09  45  “126“  1.23  u"126"

注:选择单列数据是参数为字符串类型,多列数据时参数为列表类型

3.按位置索引选择数据

3.1 按位置索引选择单行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
df.index = ['一', '二', '三', '四', '五']
print(df.iloc[0])

result:
区域                     东北
省份                     辽宁
城市                     大连
时间    2019-09-06 00:00:00
指标                     12
地址                  “123“
权重                   0.78
字符                 u"123"
Name: 一, dtype: object

3.2 按位置索引选择多行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
df.index = ['一', '二', '三', '四', '五']
print(df.iloc[[0, 1]])

result:
   区域  省份  城市         时间  指标     地址    权重      字符
一  东北  辽宁  大连 2019-09-06  12  “123“  0.78  u"123"
二  西北  广东  西安 2019-09-07  87  “124“  0.65  u"124"

4.选择连续多行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
df.index = ['一', '二', '三', '四', '五']
print(df.iloc[0:2])

result:
   区域  省份  城市         时间  指标     地址    权重      字符
一  东北  辽宁  大连 2019-09-06  12  “123“  0.78  u"123"
二  西北  广东  西安 2019-09-07  87  “124“  0.65  u"124"

表示获取所有行第1列到第3列的数据。选择连续多列数据时语法类似于切片语法,所以也称之为切片索引。

5.选择满足条件的行

5.1单个条件选择

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
print(df[df['指标'] < 50])

result:
   区域   省份  城市         时间  指标    权重
0  东北   辽宁  大连 2019-09-06  12  0.78
3  华北   湖北  北京 2019-09-09  45  1.23
4  华中  黑龙江  武汉 2019-09-10  21  8.90

5.2 多个条件选择

5.2.1 多个条件是且的关系

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
print(df[(df['指标'] < 50) & (df['权重'] < 1)])

result:
   区域  省份  城市         时间  指标    权重
0  东北  辽宁  大连 2019-09-06  12  0.78

5.2.2 多个条件是或的关系

df = pd.read_excel(r'C:\Users\admin\Desktop\data_test.xlsx')
print(df[(df['指标'] < 50) | (df['权重'] < 1)])

result:
   区域   省份  城市         时间  指标    权重
0  东北   辽宁  大连 2019-09-06  12  0.78
1  西北   广东  西安 2019-09-07  87  0.65
2  华南   北京  深圳 2019-09-08  87  0.34
3  华北   湖北  北京 2019-09-09  45  1.23
4  华中  黑龙江  武汉 2019-09-10  21  8.90

到此这篇关于pandas实现按行选择的示例代码的文章就介绍到这了,更多相关pandas 按行选择内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2021-07-20

pandas.DataFrame.to_json按行转json的方法

最近需要将csv文件转成DataFrame并以json的形式展示到前台,故需要用到Dataframe的to_json方法 to_json方法默认以列名为键,列内容为值,形成{col1:[v11,v21,v31-],col2:[v12,v22,v32],-}这种格式,但有时我们需要按行来转为json,形如这种格式[row1:{col1:v11,col2:v12,col3:v13-},row2:{col1:v21,col2:v22,col3:v23-}] 通过查找官网我们可以看到to_json方法有

pandas.dataframe按行索引表达式选取方法

需要把一个从csv文件里读取来的数据集等距抽样分割,这里用到了列表表达式和dataframe.iloc 先生成索引列表: index_list = ['%d' %i for i in range(df.shape[0]) if i % 3 == 0] 在dataframe中选取 sample_df = df.iloc[index_list] 合起来 sample_df = df.iloc[['%d' %i for i in range(df.shape[0]) if i % 3 == 0]] 各

pandas按行按列遍历Dataframe的几种方式

遍历数据有以下三种方法: 简单对上面三种方法进行说明: iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问. itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率高. iteritems():按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问. 示例

Pandas实现DataFrame按行求百分数(比例数)

简述 Motivation 一般来说,每个部分的内容数量是较为容易获取的,但比例(百分数)这样的数据是二次数据,这样的操作很常见 比例的信息相比于纯粹的数字更体现的整体体系的内部变化迁移的过程 Contribution 给了实例,follow下就没问题了~ Codes 导入包的部分,我就不写了哈 这里假设每行是属于不同月份的数据 >>> df a b c d e month0 0 1 2 3 4 month1 5 6 7 8 9 month2 10 11 12 13 14 month3

python pandas dataframe 按列或者按行合并的方法

concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False) objs 是需要拼接的对象集合,一般为列表或者字典 axis=0 是

Python pandas.DataFrame调整列顺序及修改index名的方法

1. 从字典创建DataFrame >>> import pandas >>> dict_a = {'user_id':['webbang','webbang','webbang'],'book_id':['3713327','4074636','26873486'],'rating':['4','4','4'],'mark_date':['2017-03-07','2017-03-07','2017-03-07']} >>> df = pandas.

Python Pandas中根据列的值选取多行数据

Pandas中根据列的值选取多行数据 # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column_name'].isin(some_values)] # 多种条件的选取 用 & df.loc[(df['column'] == some_value) & df['other_column'].isin(some_values)] # 选取不等于某些值的

Python pandas.DataFrame 找出有空值的行

0.摘要 pandas中DataFrame类型中,找出所有有空值的行,可以使用.isnull()方法和.any()方法. 1.找出含有空值的行 方法:DataFrame[DataFrame.isnull().T.any()] 其中,isnull()能够判断数据中元素是否为空值:T为转置:any()判断该行是否有空值. import pandas as pd import numpy as np n = np.arange(20, dtype=float).reshape(5,4) n[2,3]

python pandas dataframe 行列选择,切片操作方法

SQL中的select是根据列的名称来选取:Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取.相关函数如下: 1)loc,基于列label,可选取特定行(根据行index): 2)iloc,基于行/列的position: 3)at,根据指定行index及列label,快速定位DataFrame的元素: 4)iat,与at类似,不同的是根据position来定位的: 5)ix,为loc与i

python pandas.DataFrame.loc函数使用详解

官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is primarily label based, but may also be used with a boolean array. # 可以使用label值,但是也可以使用布尔值 Allowed inputs are: # 可以接受单个的label,多个label的列表,多个label的切片 A singl

python pandas dataframe 去重函数的具体使用

今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({'k': [1, 1, 2, 2]}) print data IsDuplicated = data.duplicated() print IsDuplicated print type(IsDuplicated) data = data.drop_duplicates() print data 执行

python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响... 到今天终于完全搞清楚了!!! 先手工生出一个数据框吧 import numpy as np import pandas as pd df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc')) df 是这样子滴 那么这三种选取数据的方式该怎么选择呢? 一.当每列已有column name时,用

删除python pandas.DataFrame 的多重index实例

如下dataframe想要删除多层index top1000[:10] name sex births year prop year sex 1880 F 0 Mary F 7065 1880 0.077643 1 Anna F 2604 1880 0.028618 2 Emma F 2003 1880 0.022013 3 Elizabeth F 1939 1880 0.021309 4 Minnie F 1746 1880 0.019188 5 Margaret F 1578 1880 0.

numpy中实现二维数组按照某列、某行排序的方法

如何根据二维数组中的某一行或者某一列排序?假设data是一个numpy.array类型的二维数组,可以利用numpy中的argsort函数进行实现,代码实例如下: data = data[data[:,2].argsort()] #按照第3列对行排序 注意:argsort返回的只是排好序后的行索引,不会改变原数组. 按照某行进行排序,可以利用转置操作,代码如下所示: data = data.T(data.T[:,2].argsort()).T # 按照第3行对列进行排序 也可以直接按行进行排序,