我似乎有各地加盟一些問題/大熊貓合併。 (我從來沒有這個問題到現在爲止。)所以,現在我有這樣的代碼至今:似乎無法獲得合併或加入在Python大熊貓工作
from difflib import SequenceMatcher
import pandas as pd
import numpy as np
import pyodbc
conn_str = (
r'Driver={SQL Server};'
r'Server=fake.fake.lan;'
r'Database=fake;'
r'Trusted_Connection=yes;'
)
cnxn = pyodbc.connect(conn_str)
attr = pd.read_excel('AttrList.xlsx')
attr['PATIENT NAME1'] = attr['LAST_NAME'] + ', ' + attr['FIRST_NAME']
sql = '''SELECT ssn.Client_ID,
ssn.SSN,
n.LastName + ', ' + n.FirstName AS clientname
FROM limiteddb.dbo.Client_SSN AS ssn
INNER JOIN limiteddb.dbo.ClientName AS n ON n.Client_ID = ssn.Client_ID
AND n.ORG_ID = 1;'''
data = pd.DataFrame(pd.read_sql(sql, cnxn))
現在,在這一點上我有2個dataframes我想基於SSN合併到一起。 (兩者都有SSN專欄)但無論出於何種原因,我似乎無法使其工作。
我已經試過以下,但,當我打電話合併,我的兩個SSN列不匹配。 (例如我得SSN1是485358751和SSN2是952147652爲行1.我所有的例子都是假的)兩個核潛艇沒有人可以相互匹配:
merged = attr.join(data, lsuffix='1', rsuffix='2')`
我也嘗試合併但我風與NaN值對我的數據幾乎全部:
merged = pd.merge(attr, data, on='SSN', how='outer')
我看過在Excel中的數據,當我在比賽看那裏我知道,我的數據,大約90%應該有匹配的SSN。我也檢查過我的數據類型。任何建議/想法/幫助表示讚賞。
編輯:任何人都知道,我已經明顯的加入/合併。我知道如何去做。我不確定是什麼導致了這種情況,但由於某種原因,我的兩個數據幀沒有意識到他們共享了很多SSN。當我進行內部聯接時,例如,我的數據框爲空。我已經檢查過,以確保我的兩個SSN都是對象。 attr['SSN'] = attr['SSN'].astype(object)
編輯:這裏是我的2個dataframes印刷數據類型,一旦他們都是進口的。
ATTR:
LAST_NAME對象 FIRST_NAME對象 ALTRUISTA_ID的int64 PATIENT_DOB對象 RISK_CATEGORY_NAME對象 RISK_SCORE float64 健康計劃對象 THL_STATUS對象 ASSIGNED DATE /歸因DATE對象 ADDRESS對象 PHONE NUMBER float64 INSURANCE ID float64 SSN INT64 PROGRAM_NAME對象s LAST_CLAIM float64 LAST_VISIT_DATE float64 NEXT_VISIT_DATE float64 PCP_NAME對象 ER_VISITS的int64 APP_VISITS的int64 ADTDAYS_COUNT的int64 DUE_DAYS的int64 D型細胞:對象
數據:
CLIENT_ID的int64 SSN對象 CLIENTNAME對象 D型:物件
所以現在我需要將我的SSN從attr數據幀轉換爲一個字符串。我一直在使用attr['SSN'].apply(str)
來做到這一點。 (我是用attr['SSN'] = attr['SSN'].astype(object)
但它不工作,我想這是我最初的問題。)這表明,一旦我運行這個數據類型已經改變:SSN對象。現在我的合併:merged = pd.merge(attr, data, on='SSN', how='outer')
。它看起來像它的工作!
'.join'在'.merge'加入指定列時加入兩個數據框的索引。爲什麼不''如何='內心',默認參數? – Parfait