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中的浅拷贝和深拷贝
May 30 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
python远程连接MySQL数据库
Apr 19 Python
wxPython:python首选的GUI库实例分享
Oct 05 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
python算的上脚本语言吗
Jun 22 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 Python
python获取淘宝服务器时间的代码示例
Apr 22 Python
Python 中的Sympy详细使用
Aug 07 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
 Python 中 logging 模块使用详情
Mar 03 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
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
自动完成的搜索框javascript实现
2016/02/26 Javascript
谈谈第三方App接入微信登录 解读
2016/12/27 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python开发中module模块用法实例分析
2015/11/12 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
Python3中列表list合并的四种方法
2019/04/19 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
Python可以实现栈的结构吗
2020/05/27 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
自我评价优秀范文分享
2013/11/30 职场文书
创业计划书如何编写
2014/02/06 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
银行授权委托书样本
2014/10/13 职场文书
大学生自荐书范文
2015/03/05 职场文书
学习与创新自我评价
2015/03/09 职场文书