python——python连接oracle数据库,并且比较数据之间的差别
来源:互联网 发布:openstack vsphere知乎 编辑:程序博客网 时间:2024/04/29 11:36
前几天同事问我一个问题,如何找出两份数据之间的不一样的值。这样描述问题不太好理解,举个例子:
两份数据是从oracle中两个不同的表读出来的,两份数据均有四个字段,其中两个字段日期和代码,另外两个字段代表最高价和最低价。现在想要找出两份数据相同日期和代码的记录是否最高价和最低价一致,有不一致的就找出来。
还原一下场景:
首先新建两个Dataframe:
import pandas as pddf1 = pd.DataFrame({'date': ['2010', '2010', '2010', '2010', '2010', '2010'], 'symbol': [1, 2, 3, 4, 5, 6], 'maxprice': [100, 200, 300, 400, 500, 600], 'minprice': [10, 20, 30, 40, 50, 60]})df2 = pd.DataFrame({'date': ['2010', '2010', '2010', '2010', '2010', '2010','2010'], 'symbol': [1, 2, 3, 4, 5, 6,7], 'maxprice': [100, 200, 300, 400, 500, 600,700], 'minprice': [10, 20, 30, 40, 50, 60,70]})
df1和df2如下:
思考了一下,用pandas的Dataframe可以很轻松解决。
首先是取数:
# encoding: utf-8import pandas as pdimport cx_Oraclefrom string import Templateimport sysreload(sys)sys.setdefaultencoding("utf-8")database_oracle1 = {'user': 'xxx', 'password': 'xxx', 'ip': 'xxxx', 'port': 'xxxx','name': 'xxx'}conn_oracle1 = cx_Oracle.connect(database_oracle1['user'], database_oracle1['password'], database_oracle1['ip'] + ':' + database_oracle1['port'] + '/' + database_oracle1['name'])query = "select A,B,C,D from table where the_year = '$year'"query = Template(query)query = query.substitute(year='2010')df1 = pd.read_sql_query(query, conn_oracle1)这里只给出取一份数据的样例,假设我们两份数据都取出来了,并且就是上面定义的df1和df2。
现在需要比较两份数据的异同。
使用pandas的merge函数,可以轻松解决。
df3 = pd.merge(df1, df2, how='inner', on=['date', 'symbol'])df3如下:
merge的使用方式和sql语言的join是一致的。因为此处merge的方式选择的是inner,所以只有5行。
随后怎么处理就很清楚了。
df4 = pd.DataFrame()for i in range(1, 3): df4[i] = df3.icol(i)-df3.icol(i+3)上面数据没有造好,所以结果都是0。
各位可以考虑一下如何优化代码,适用性能更强一些,我这里就不写了。
阅读全文
0 0
- python——python连接oracle数据库,并且比较数据之间的差别
- python连接oracle数据库
- Python连接oracle数据库
- Python连接Oracle数据库
- 【Oracle】Python 连接Oracle 数据库
- Python 2 和 Python 3 的版本之间差别
- 使用python连接oracle数据库
- 【python】 python 连接oracle数据库 cx_Oracle插件
- Oracle数据库的驱动包ojdbc*.jar之间的差别
- Oracle数据库的驱动包ojdbc*.jar之间的差别
- Oracle数据库的驱动包ojdbc*.jar之间的差别
- Python数据库的连接
- Python数据库的连接
- AJAX——连接数据库并且返回XML数据
- Python连接oracle数据库踩到的坑
- python连接oracle数据库.so文件未找到的解决办法
- 【python】比较两个json并返回差别
- 一段python从mysql数据库中取数据并且求平均值的代码
- Maven+SpringMVC+Mybatis 整合使用教程
- Mybatis insert之后把主键返回给实体类
- Socket.IO学习之基础入门
- 数字提示小红点 android-viewbadger
- jquery-validate格式验证(包括重名验证)
- python——python连接oracle数据库,并且比较数据之间的差别
- 《软技能-代码之外的生存指南》书摘
- 开源社交系统ThinkSNS+ V0.8.0 正式发布(一期功能版本)
- Struts2获取指定对象和配置--第二天
- Java+Selenium3框架设计准备篇5-TestNG实现日志输出
- 软件无线电USRP测试子板系列之USRP1常用命令
- 指针和数组的区别
- 使用Java开发高性能网站需要关注的那些事儿
- Markdown 新手指南