簡體   English   中英

使用合並功能將信息從一個數據框組合到另一個數據框時出錯

[英]Error in using merge function to combine information from one dataframe to another

我有兩個數據幀。

第一個采用這種格式,讓我們稱之為df

Date  Counterparty Amount
3/1   Bank A       $100
3/1   Bank B       $100 
3/1   Bank C       $100
...
3/30  Bank B       $100
3/30  Bank C       $150
3/30  Bank D       $300
3/30  Bank E       $250

第二個具有此格式的每個銀行的評級信息。 我們稱之為NRSRO

Date  Bank A   Bank B   Bank C   Bank D   Bank E   Bank F ....Bank Z
3/1   AA      ...
3/2   AA      ...
3/3   AA      ...

我試過以下代碼

NRSRO= pd.DataFrame(NRSRO.stack(), columns=['Rating']).reset_index()
NRSRO= NRSRO.rename(columns = {'level_1':'Counterparty'})

這會將NRSRO數據幀轉換為:

Date  Counterparty Rating
3/1   Bank A       AA
3/2   Bank A       AA
...
3/30  Bank A       AA
3/1   Bank B       AAA
3/2   Bank B       AAA
...
...
3/30  Bank Z       AAA

最后,合並到數據幀

result = pd.merge(df, NRSRO, how = 'left', on = ['Date', 'Counterparty'])

我的結果好壞參半。

當我運行它時,返回是真的。

result['Rating'].isnull().values.any()

對於某些銀行,我將評級數據成功附加到“結果”數據框,但對於其他銀行,則顯示NaN。 我對數據完整性很有信心,來源沒有丟失的數據。

知道這里發生了什么嗎?

您正在使用左連接加入兩列,因此如果NRSRO數據幀在特定日期沒有對銀行A的評級,並且該日期在df存在,則它將在result數據框中為空。 要檢查是否發生這種情況,請運行

result = pd.merge(df, NRSRO, how = 'inner', on = ['Date', 'Counterparty'])

如果此數據框中仍有空值,那么NRSRO數據框中可能會有一些空值,因此您應該檢查它。 如果這返回一個沒有空值的完美數據幀,那么我的上述推理就是有一些缺失的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM