dataframe设置两个条件取值的实例


Posted in Python onApril 12, 2018

如下所示:

>>> import pandas as pd
>>> import numpy as np
>>> from pandas import Series, DataFrame
>>> df = DataFrame({'name':['a','a','b','b'],'classes':[1,2,3,4],'price':[11,22,33,44]})
>>> df
 classes name price
0  1 a  11
1  2 a  22
2  3 b  33
3  4 b  44
>>>

根据index和columns取值

>>> s = df.loc[0,'price']
>>> s
11

根据同行的columns的值取同行的另一个columns的值

>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price']
>>> sex
0 11
Name: price, dtype: int64
>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price'].values[0]
>>> sex
11

根据条件同时取得多个值

>>> name,price = df.loc[df.classes==1,('name','price')].values[0]
>>> name
'a'
>>> price
11
>>>

对一列赋值

>>> df.loc[: , 'price']=0
>>> df
 classes name price
0  1 a  0
1  2 a  0
2  3 b  0
3  4 b  0
>>>

对df的一个列进行函数运算

【1】
>>> df['name'] = df['name'].apply(lambda x: x.upper())
>>> df
 classes name price
0  1 A  11
1  2 A  22
2  3 B  33
3  4 B  44
【2】
>>> df.loc[:, 'name'] = df['name'].apply(lambda x: x.upper())
>>> df
 classes name price
0  1 A  11
1  2 A  22
2  3 B  33
3  4 B  44
>>>

对df的几个列进行函数运算

【1】
>>> df[['classes','price']] = df[['classes', 'price']].applymap(lambda x: str(x))
>>> print(type(df.loc[0, "classes"]))
<class 'str'>
>>> print(df.loc[0, "classes"])
1
【2】
>>> df.loc[:, ['classes','price']] = df[['classes', 'price']].applymap(lambda x: int(x))
>>> print(type(df.loc[0, "classes"]))
<class 'int'>
>>> print(df.loc[0, "classes"])
1
>>>

对两个列进行去重

>>> df
 classes name price
0  1 a  11
1  1 a  22
2  3 b  33
3  4 b  44
>>> df.drop_duplicates(subset=['classes', 'name'], inplace=True)
>>> df
 classes name price
0  1 a  11
2  3 b  33
3  4 b  44

多个条件分割字符串

>>> fund_memeber = '赵四、 王五'
>>> fund_manager_list = re.split('[;, 、]', fund_memeber)
>>> fund_manager_list
['赵四', '', '王五']
#DataFrame构造器
>>> df = DataFrame({'x':[1],'y':[2]})
>>> df
 x y
0 1 2
>>>

删除某列值为特定值得那一行

>>> df = DataFrame({'name':['a','b','c','d'],'classes':[1,2,3,4],'price':[11,22,33,44]})
>>> df
 classes name price
0  1 a  11
1  2 b  22
2  3 c  33
3  4 d  44
【方法一】
>>> df = df.loc[df['name']!='a']
>>> df
 classes name price
1  2 b  22
2  3 c  33
3  4 d  44
>>> 
【方法二】
 df.drop(df[df.name=='a'].index,axis=0)
 #筛选df的每列值包含某个字段‘/a'
 >>> import pandas as pd
>>> df = pd.DataFrame({'a':['A', 'B'], 'b': ['AA', 'BB']})
>>> df
 a b
0 A AA
1 B BB
>>> df[df['a'].str.contains(r'A')]
 a b
0 A AA
>>> df = pd.DataFrame({'a':['/api/', 'B'], 'b': ['AA', 'BB']})
>>> df
  a b
0 /api/ AA
1  B BB
>>> df[df['a'].str.contains(r'/api/')]
  a b
0 /api/ AA
>>>

把列变成index和把index变成列

df
  request_url visit_times
9 fofeasy_产品基本信息   7
8   投顾挖掘   6
5   投顾挖掘   5
6   投顾挖掘   5
7 fofeasy_产品基本信息   5
3 fofeasy_产品基本信息   4
4 fofeasy_产品基本信息   4
2   投顾挖掘   2
0  行业数据——其他   1
1  行业数据——其他   1
x = df.set_index('request_url')
x
    visit_times
request_url    
fofeasy_产品基本信息   7
投顾挖掘      6
投顾挖掘      5
投顾挖掘      5
fofeasy_产品基本信息   5
fofeasy_产品基本信息   4
fofeasy_产品基本信息   4
投顾挖掘      2
行业数据——其他     1
行业数据——其他     1
x.reset_index('request_url')
  request_url visit_times
0 fofeasy_产品基本信息   7
1   投顾挖掘   6
2   投顾挖掘   5
3   投顾挖掘   5
4 fofeasy_产品基本信息   5
5 fofeasy_产品基本信息   4
6 fofeasy_产品基本信息   4
7   投顾挖掘   2
8  行业数据——其他   1
9  行业数据——其他   1

pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe

>>>df.groupby(by=['request_url'])['visit_times'].sum()
>>>
request_url
fofeasy_产品基本信息 20
投顾挖掘    18
行业数据——其他   2
Name: visit_times, dtype: int64

dict变成dataframe

In [15]: dict = pd.DataFrame({'x':1, 'y':2}, index=[0])
In [16]: dict
Out[16]:
 x y
0 1 2

iloc

In [69]: df1.iloc[1:5, 2:4]
Out[69]: 
   4   6
2 0.301624 -2.179861
4 1.462696 -1.743161
6 1.314232 0.690579
8 0.014871 3.357427

以上这篇dataframe设置两个条件取值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则表达式re模块详细介绍
May 29 Python
python使用post提交数据到远程url的方法
Apr 29 Python
python计算圆周率pi的方法
Jul 11 Python
python字符串连接方法分析
Apr 12 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
Django web框架使用url path name详解
Apr 29 Python
python创建n行m列数组示例
Dec 02 Python
python画环形图的方法
Mar 25 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
详解Scrapy Redis入门实战
Nov 18 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
使用python编写监听端
Apr 12 #Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 #Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 #Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 #Python
用pandas按列合并两个文件的实例
Apr 12 #Python
Python中多个数组行合并及列合并的方法总结
Apr 12 #Python
Python实现的凯撒密码算法示例
Apr 12 #Python
You might like
用PHP 4.2书写安全的脚本
2006/10/09 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
在点击div中的p时,如何阻止事件冒泡
2017/02/07 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
[01:27]DOTA2电竞之夜 今夜共饮庆功酒
2014/08/02 DOTA
[00:32]10月24、25日 辉夜杯外卡赛附加赛开赛!
2015/10/23 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
python实现C4.5决策树算法
2018/08/29 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
大学生求职自荐信
2013/12/12 职场文书
应届中专生自荐书范文
2014/02/13 职场文书
暑期培训心得体会
2014/09/02 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
python实现图片九宫格分割的示例
2021/04/25 Python