转载于博主flash胜龙的文章,感谢博主的总结与分享。

一、选取几列组成新的dataframe:

df = df[['A列列名', 'S列列名', 'H列列名']]

二、选取某列'STATUS'里面元素为"ACTIVE"的行,即删掉列STATUS元素不是ACTIVE的行

df = df[df['STATUS'] == "ACTIVE"]

(单项条件搜索,类似SELECT ALL WHERE df.STATUS = ACTIVE)

三、选取'BADTHING'列为元素空的行,即去掉BADTHING所在列中的空行所在行数据,组成一个新的dataframe

df = df[df['BADTHING'].isnull()]

(空值搜索)

四、选取GOODREASON列元素为列表['quality', 'cheap']内元素的行,即可用特定列表内容进行筛选

df = df[df['GOODREASON'].isin(['quality', 'cheap'])]

(多项条件搜索,类似SELECT ALL WHERE df.GOODREASON= quality AND cheap)

五、分组并进行遍历,运用groupby和for:

groupByNew = df.groupby('CITY', sort=False)

for name, groupData in groupByNew:

# TODO …… ……

如代码所示,我们可以对dataframe以某列'CITY'进行分组。我们如何取出某组的数据呢?当然是用

for循环。取出来的name即是组名,而groupData同样是一个dataframe,可以进行更进一步操作。

六、对Series数据进行排序:

series= series.sort_values(ascending=False) # 进行从大到小排序

进阶:关于groupby的一些信息:

在进行groupby运算后,直接打印会得一个object信息,添加groups参数后

print df.groupby(by=['CITY']).groups

打印出来会是带group标签和原数据行标签(也就是原来dataframe里面对应行的index)的组合信息:

{'BEIJING': [25998L, 26134L, 26135L, 26235L, 26340L], 'SHANGHAI': [33370L, 33426L, 33541L], 'CHENGDU': [26153L]

我们可以看到,按照groups来print,得出city为北京的情况下,对应原来的行标签第25998行、26134行等

即使指定了某列:

print df.groupby(by=['CITY'])['QUANTITY'].groups

依然会得出相同的结果:

{'BEIJING': [25998L, 26134L, 26135L, 26235L, 26340L], 'SHANGHAI': [33370L, 33426L, 33541L], 'CHENGDU': [26153L]

除非我们把每个分组的所有行都整理成一行,如用sum来求和:

print df.groupby(by=['CITY'])['QUANTITY'].sum()

这样就可以成功转换成dataframe了:

CITY

BEIJING 5

SHANGHAI 207

CHENGDU 518

……

汇总说明如下:

print '----------NEW------------\n', type(df.groupby(by=['CITY']))

print '----------NEW------------\n', type(df.groupby(by=['CITY']).sum())

print '----------NEW------------\n', type(df.groupby(by=['CITY'])['QUANTITY'])

print '----------NEW------------\n', type(df.groupby(by=['CITY'])['QUANTITY'].sum())

所得结果为:

----------NEW------------

----------NEW------------

----------NEW------------

----------NEW------------

说明:

一个dataframe经过groupby以后得到的类型是pandas.core.groupby.DataFrameGroupBy。而用for in循环取出的每个项的类型是pandas.core.frame.DataFrame

一个dataframe经过groupby再进行sum以后仍然是dataframe(不过具体通过那一列来sum有待考证)

一个dataframe经过groupby以后再进行列选取,得到的是pandas.core.groupby.SeriesGroupBy类型。可知用for in循环取出的是pandas.core.series.Series

一个series经过groupby再进行sum以后仍然是series

python筛选出csv满足某条件的行_Python之根据条件筛选特定行相关推荐

  1. python筛选出csv满足某条件的行_python之pandas数据筛选和csv操作

    本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c0 0 2 4 1 6 8 10 2 12 14 16 3 ...

  2. python条件循环叠加_Python基础:条件判断与循环的两个要点

    一.条件判断: Python中,条件判断用if语句实现,多个条件判断时用if...elif实现:看下面一段程序 #python 3.3.5#test if...elif age = 20 if age ...

  3. python删除特定的几行数据_Python:分成几行,并根据搜索删除特定行 - python

    我有一个csv文件,如下所示,并以我的一点python知识,我试图将其内容分为基于" sec"的行作为开始字段,并删除包含sip:+ 99 *,sip:+ 88 *的字段的特定行, ...

  4. python中去除字符串中首尾空格的函数_Python中去除字符串首尾特定字符的函数:strip()...

    Python中strip()函数的作用是去除一个字符串前导和尾部的特定字符,并返回结果字符串. Python中strip()函数默认是删除字符串前导和尾部空格,通过设定参数,也可以去除字符串前导和尾部 ...

  5. python提取包含特定字符串的行_python语言----txt中搜索特定字符串所在行

    打开IDLE(python),并新创建一个py文件,编辑内容为: '''本示例演示如何在一个txt文件中搜索特定的字符串,并将其行显示''''''# 1. 打开文件# 2. 读取行信息# 3. 判断是 ...

  6. python 按条件筛选行_Python之根据条件筛选特定行

    转载于博主flash胜龙的文章,感谢博主的总结与分享. 一.选取几列组成新的dataframe: df = df[['A列列名', 'S列列名', 'H列列名']] 二.选取某列'STATUS'里面元 ...

  7. python条件语句练习题_python学习-7 条件语句 while循环 + 练习题

    1.死循环 while 1 == 1: print('ok') 结果是一直循环 2.循环 count = 0 while count < 10: print(count) count = cou ...

  8. python去重复行_python 去除Excel中的重复行数据

    原博文 2019-08-05 16:15 − 导入pandasimport pandas as pd1.读取excel中的数据:frame = pd.DataFrame(pd.read_csv('ex ...

  9. pythonif多个条件同时满足_Python基础:条件控制if

    if 语句:条件判断1.每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块. 2.使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块. 3.python中,空字符串,空列表,空 ...

  10. python删除空值的行_python如何删除列为空的行

    1.摘要 dropna()方法,能够找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回. 2.函数详解 函数形式:dropna(axis= ...

最新文章

  1. [转].NET牛人应该知道些什么
  2. CSS_文字与特殊符号浏览器兼容性
  3. MySQL 的发展历史和版本分支:
  4. Expression Blend实例中文教程(4) - 布局控件快速入门Canvas
  5. tensorflow计算网络占用内存_详细图解神经网络梯度下降法(tensorflow计算梯度)...
  6. vue-router 跳转原理
  7. python writerow参数_csv文件的输出结果TypeError writerow()接受2个位置参数,但给出了5个...
  8. 基于JAVA+Servlet+JSP+MYSQL的酒店管理系统
  9. 使用setsockopt TCP_NODELAY禁用 Nagle算法
  10. 四、矩阵特征值与特征向量的计算
  11. 实现RedHat6.3全屏,解决最大分辨率只有800*600
  12. 【申博攻略】三.北交计算机学院学术型博士“申请-考核”攻略(经验分享篇)
  13. c语言中开方,C++_详细解析C语言中的开方实现,关于C语言中的开方计算,首先 - phpStudy...
  14. [Python从零到壹] 十八.可视化分析之Basemap地图包入门详解
  15. c花体复制_求类似ℒℴѵℯ 这样的花体英文字母符号,可以直接复制的
  16. 急需“五彩连珠”小游戏的代码
  17. 瑜欣平瑞通过注册:年营收6.6亿 胡云平一家三口为实控人
  18. XMind:超越FreeMind的思维导图软件
  19. Python爬虫伪装,请求头User-Agent池,和代理IP池搭建使用
  20. 完美解决 手机软键盘遮挡问题

热门文章

  1. OO系统分析员之路--用例分析系列(1)--什么是用例
  2. ava程序员职业生涯规划范文
  3. 【设计开发命名必备】英语单词缩写规则
  4. Unity直线轨迹导弹预判
  5. mcinabox运行库下载_MCinaBox运行库下载
  6. JavaWeb中的四大作用域对象
  7. 麦子学院C++学习笔记
  8. 坐标系统和glMatrix(GLM)
  9. mysql 锁住一行数据_MySQL-锁
  10. php判断号码归属,php手机号码归属地查询