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 相关文章推荐
web.py中调用文件夹内模板的方法
Aug 26 Python
python实现比较两段文本不同之处的方法
May 30 Python
python操作ssh实现服务器日志下载的方法
Jun 03 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python操作Excel之xlsx文件
Mar 24 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
Python实现中一次读取多个值的方法
Apr 22 Python
django表单实现下拉框的示例讲解
May 29 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
python导入坐标点的具体操作
May 10 Python
opencv python在视屏上截图功能的实现
Mar 05 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
用PHP制作的意见反馈表源码
2007/03/11 PHP
php 字符转义 注意事项
2009/05/27 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
IE和Firefox之间在JavaScript语法上的差异
2016/04/22 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
vue elementUI tree树形控件获取父节点ID的实例
2018/09/12 Javascript
js实现数字滚动特效
2019/12/16 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
Python中的map、reduce和filter浅析
2014/04/26 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
Java编程面试题
2016/04/04 面试题
作文批改评语大全
2014/04/23 职场文书
法制宣传口号
2014/06/16 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
志愿者个人总结
2015/03/03 职场文书