本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明

1. 数据筛选

a b c0 0 2 4

1 6 8 10

2 12 14 16

3 18 20 22

4 24 26 28

5 30 32 34

6 36 38 40

7 42 44 46

8 48 50 52

9 54 56 58

(1)单条件筛选

df[df['a']>30]

# 如果想筛选a列的取值大于30的记录,但是之显示满足条件的b,c列的值可以这么写

df[['b','c']][df['a']>30]

# 使用isin函数根据特定值筛选记录。筛选a值等于30或者54的记录

df[df.a.isin([30, 54])]

(2)多条件筛选

可以使用&(并)与| (或)操作符或者特定的函数实现多条件筛选

# 使用&筛选a列的取值大于30,b列的取值大于40的记录

df[(df['a'] > 30) & (df['b'] > 40)]

(3)索引筛选

a. 切片操作

df[行索引,列索引]或df[[列名1,列名2]]

#使用切片操作选择特定的行

df[1:4]

#传入列名选择特定的列

df[['a','c']]

b. loc函数

当每列已有column name时,用 df [ ‘a’ ] 就能选取出一整列数据。如果你知道column names 和index,且两者都很好输入,可以选择 .loc同时进行行列选择。

In [28]: df.loc[0,'c']

Out[28]: 4In [29]: df.loc[1:4,['a','c']]

Out[29]:

a c1 6 10

2 12 16

3 18 22

4 24 28In [30]: df.loc[[1,3,5],['a','c']]

Out[30]:

a c1 6 10

3 18 22

5 30 34

c. iloc函数

如果column name太长,输入不方便,或者index是一列时间序列,更不好输入,那就可以选择 .iloc了,该方法接受列名的index,iloc 使得我们可以对column使用slice(切片)的方法对数据进行选取。这边的 i 我觉得代表index,比较好记点。

In [35]: df.iloc[0,2]

Out[35]: 4In [34]: df.iloc[1:4,[0,2]]

Out[34]:

a c1 6 10

2 12 16

3 18 22In [36]: df.iloc[[1,3,5],[0,2]]

Out[36]:

a c1 6 10

3 18 22

5 30 34In [38]: df.iloc[[1,3,5],0:2]

Out[38]:

a b1 6 8

3 18 20

5 30 32

d. ix函数

ix的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc和iloc的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称。

df.ix[1:3,['a','b']]

Out[41]:

a b1 6 8

2 12 14

3 18 20In [42]: df.ix[[1,3,5],['a','b']]

Out[42]:

a b1 6 8

3 18 20

5 30 32In [45]: df.ix[[1,3,5],[0,2]]

Out[45]:

a c1 6 10

3 18 22

5 30 34

e. at函数

根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名。

In [46]: df.at[3,'a']

Out[46]: 18

f. iat函数

与at的功能相同,只使用索引参数

In [49]: df.iat[3,0]

Out[49]: 18

2. csv操作

csv文件内容

Supplier Name,Invoice Number,Part Number,Cost,Purchase Date

Supplier X,001-1001,2341,$500.00 ,1/20/14Supplier X,001-1001,2341,$500.00 ,1/20/14Supplier X,001-1001,5467,$750.00 ,1/20/14Supplier X,001-1001,5467,$750.00 ,1/20/14Supplier Y,50-9501,7009,$250.00 ,1/30/14Supplier Y,50-9501,7009,$250.00 ,1/30/14Supplier Y,50-9505,6650,$125.00 ,2002/3/14Supplier Y,50-9505,6650,$125.00 ,2002/3/14Supplier Z,920-4803,3321,$615.00 ,2002/3/14Supplier Z,920-4804,3321,$615.00 ,2002/10/14Supplier Z,920-4805,3321,$615.00 ,2/17/14Supplier Z,920-4806,3321,$615.00 ,2/24/14

(1)csv文件读写

import pandas aspd

# 读写csv文件

df= pd.read_csv("supplier_data.csv")

df.to_csv("supplier_data_write.csv",index=None)

(2)筛选特定的行

#Supplier Nmae列中姓名包含'Z',或者Cost列中的值大于600

print(df[df["Supplier Name"].str.contains('Z')])

print(df[df['Cost'].str.strip('$').astype(float) > 600])

print(df.loc[(df["Supplier Name"].str.contains('Z'))|(df['Cost'].str.strip('$').astype(float) > 600.0),:])

#行中的值属于某个集合

li= [2341,6650]

print(df[df['Part Number'].isin(li)])

print(df.loc[df['Part Number'].astype(int).isin(li),:])

#行中的值匹配某个模式

print(df[df['Invoice Number'].str.startswith("001-")])

(3)选取特定的列

#选取特定的列

#列索引值,打印1,3列

print(df.iloc[:,1:4:2])

#列标题打印

print(df.loc[:,["Invoice Number", "Part Number"]])

#选取连续的行

print(df.loc[1:4,:])

python筛选出csv满足某条件的行_python之pandas数据筛选和csv操作相关推荐

  1. python筛选csv数据_pandas数据筛选和csv操作的实现方法

    1. 数据筛选 a b c 0 0 2 4 1 6 8 10 2 12 14 16 3 18 20 22 4 24 26 28 5 30 32 34 6 36 38 40 7 42 44 46 8 4 ...

  2. python处理Excel实现自动化办公教学(数据筛选、公式操作、单元格拆分合并、冻结窗口、图表绘制等)【三】

    相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...

  3. python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例

    功能:扫描当前目录下所有CSV文件并对其中文件进行统计,输出统计值到CSV文件 pip install pandas import pandas as pd import glob,os,sys in ...

  4. python中csv库写入表头_python的pandas工具包,保存.csv文件时不要表头的实例

    用pandas处理.csv文件时,有时我们希望保存的.csv文件没有表头,于是我去看了DataFrame.to_csv的document. 发现只需要再添加header=None这个参数就行了(默认是 ...

  5. pandas删除满足条件的行_入门Pandas练习

    本节主要是自己学习pandas的练习,与你分享. 导入Pandas与NumPy import numpy as np import pandas as pd 生成Series时,pandas默认生成整 ...

  6. csv文件示例_如何在R中使用数据框和CSV文件-带有示例的详细介绍

    csv文件示例 Welcome! If you want to start diving into data science and statistics, then data frames, CSV ...

  7. 【Python学习系列二十二】pandas数据筛选和排序

    在Pandas中通过.sort和.loc函数也可以实现这两 个功能..sort函数可以实现对数据表的排序操作,.loc函数可以实现对数据表的筛选操作. 1.排序 sort函数主要包含6个参数:colu ...

  8. python同花顺交易接口_开启量化第一步!同花顺iFinD数据接口免费版简易操作教程...

    金融市场波动频繁,投资往往会夹杂非理性的情绪.而量化交易,旨在以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策略, ...

  9. python中字典的value可以为任意对象_Python学习之字典的删改查操作

    字典的删改查操作https://www.zhihu.com/video/1185227901603094528 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>val ...

最新文章

  1. c++引用的自我见解
  2. [刘阳Java]_Web前端入门级练习_迅雷官宣网设计
  3. 基于xampp搭建的个人博客。
  4. mongoudb 等于_MongoDB常用操作
  5. 【DP】【期望】$P1850$换教室
  6. stylus之混合书写(Mixins)
  7. 软件工程 团队作业 #9
  8. python如何批量下载邮箱全部附件_Python编写执行测试用例及定时自动发送最新测试报告邮件...
  9. ICollection IEnumerable/IEnumerator IDictionaryEnumerator yield
  10. 《算法导论》读书笔记之第10章 基本数据结构之二叉树
  11. 手机改直供电并自动开启adb无线调试修改电量
  12. 怎么才可以使用 IPX 协议???
  13. mysql查询数据库剩余空间大小_MySQL中查询所有数据库占用磁盘空间大小
  14. Oliver Wyman的一年制PTA面试
  15. Thread 1: signal SIGABRT解决方法之一
  16. vue+腾讯地图标记弹框
  17. mysql员工星期排班表设计_excel表格怎样制作排班表 星期和月份快速填充,来看看吧...
  18. dlink交换机(DLINK交换机灯)
  19. Echarts 生成地图html
  20. GD32实战11__SPI FLASH

热门文章

  1. ora-01722 无效数字_错误提示ORA-01722: 无效数字一例
  2. IP地址划分、组播地址、公有IP、私有IP
  3. c语言实现一元多项式的除法,课内资源 - 基于C++的一元多项式的计算
  4. Masimo宣布首款用于 Root(R)患者监护与互联总机的第三方Masimo Open Connect(R)模块获得CE标记
  5. 文章阅读统计php,WordPress博客统计文章阅读次数及访客数并刷访问数
  6. 体验godaddy域名转入,添加A记录,及使用dnspod的NS
  7. 如何破解游戏包中的素材与3D模型
  8. 测试上线邮件书写规范
  9. 配置pcie网卡指示灯
  10. Manim文档及源码笔记-CE文档-示例库3使用Manim绘图