![](/img/trans.png)
[英]Regroup the data in one dataframe using the information from another dataframe
[英]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.