【发布时间】:2018-07-08 15:21:57
【问题描述】:
我有这个 python 代码,它从 DB2 数据库中提取一些数据到 Pandas 数据框 data1 和 data2 中。 Data2 有一个名为 ARCD 的列,其文本值为 ''、'01'、'03'、'14' 等。
TABLE1
CSOFF CSDATE
ABC 20180101
ADV 20180212
AFS 20180121
ADF 20180202
ABC 20180115
TABLE2
AROFF ARAMT ARCD ARTRDT
ABC 200 20180101
AFS 150 01 20180121
ADV 210 20180129
我只需要 data3 中 ARCD 中的值为空白的那些记录,即“”和“01”。
我可以获取所有具有“01”、“03”等代码的值。但我无法提取具有空白值的记录,即“”。
import pyodbc
import pandas as pd
con = pyodbc.connect(
driver='{iSeries Access ODBC Driver}',
system='',
uid='',
pwd='')
cur = con.cursor()
query = """
SELECT * FROM QS99F.TABLE1 WHERE CSDATE > 20180100
"""
data1 = pd.read_sql(query,con,index_col = None)
query = """
SELECT * FROM QS99F.TABLE2 WHERE ARTRDT > 20180100
"""
data2 = pd.read_sql(query,con,index_col = None)
data3 = pd.merge(data1[['CSOFF','CSRATE']],data2[['AROFF','ARAMT','ARCD']],left_on=['CSOFF','CSMKT','CSSUFX'],right_on=['AROFF','ARMKT','ARSUFX'],how='inner')
dp = data3['ARCD'] == "01"
ar = data3['ARCD'] == ""
data3 = data3[dp|ar]
print (data3)
【问题讨论】:
-
请提供minimal reproducible example。
data3[dp|ar]怎么不起作用? -
data3[dp|ar] 正在工作,它没有选择“”(空白)的记录。如果我在 ar 中放入任何不是“”的东西,那么它就可以工作。所以我们不能说 data3[dp|ar] 不起作用。
标签: python database pandas join db2