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读取文件时的路径问题
Feb 11 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
Python super()函数使用及多重继承
May 06 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
Python GUI库Tkiner使用方法代码示例
Nov 27 Python
解决pytorch 数据类型报错的问题
Mar 03 Python
python 命令行传参方法总结
May 25 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版本实现代码
2012/09/15 PHP
php实现redis数据库指定库号迁移的方法
2015/01/14 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
php无限级分类实现方法分析
2016/10/19 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
JS实现弹性菜单效果代码
2015/09/07 Javascript
Bootstrap模态框调用功能实现方法
2016/09/19 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python3实现多线程聊天室
2018/12/12 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python多线程使用方法实例详解
2019/12/30 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
python 发送邮件的四种方法汇总
2020/12/02 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
Bugatchi官方网站:男士服装在线
2019/04/10 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
优秀语文教师事迹
2014/05/18 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
社区服务活动报告
2015/02/05 职场文书
荒岛余生观后感
2015/06/09 职场文书
初中生物教学随笔
2015/08/15 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
Redis中一个String类型引发的惨案
2021/07/25 Redis
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技