[英]Join with MultiIndex DataFrames Creates Empty Fields [pandas]
我正在嘗試在兩個字段(“ date_key”和“ user_uuid”)上以大熊貓的形式聯接兩個DataFrame,但是當我這樣做時,盡管在搜索表中查找匹配項時存在重疊,但我只會得到一個空集。
DataFrame one(icloset)看起來像:
In [167]: icloset.head()
Out[167]:
count ASL75
date_key user_uuid
20130917 000a26bf-e7ff-3124-9b00-b227ee155e7f 11 9.03510
0017b444-83f7-3adb-9727-926de4041731 3 45.05510
0022c69b-f1f5-301e-812d-89725e17c9dd 19 31.71980
00453fcd-93bd-373e-9248-f821ce8279f2 10 17.68785
004a050d-f855-3c9c-bfe0-5c504df965bc 8 45.20115
數據框二(definedRID)如下所示:
In [170]: definedRIDs.head()
Out[170]:
rid user_uuid rid_slots last48status bad_RID \
0 48830 2eda12da-d613-3e1e-95de-de3c75a5f9ef 1 Fulfilling False
1 51025 a466303a-d66d-3db8-b640-c4d57d134404 1 Fulfilling False
2 51457 c41d87d3-8abc-328d-ae00-c63d7cf81ef2 1 Fulfilled False
3 48626 97ff5c81-e5df-30ac-9b7a-bda73fbf499f 1 Fulfilled False
4 51450 0ac72f09-0fb7-35ae-b8a2-ee6d131100b0 1 Fulfilled False
date_key
0 20130924
1 20130927
2 20130927
3 20130923
4 20130927
我確保去除了defineRID的索引,以使其看起來像文檔中的該示例 。
由於某些原因,當我嘗試在文檔中復制示例時,合並字段(count和ASL75)中的結果為空:
In [171]: definedRIDs.join(icloset,on=['date_key','user_uuid'])
Out[171]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 7623 entries, 0 to 7622
Data columns (total 8 columns):
rid 7623 non-null values
user_uuid 7623 non-null values
rid_slots 7623 non-null values
last48status 7623 non-null values
bad_RID 7623 non-null values
date_key 7623 non-null values
count 0 non-null values
ASL75 0 non-null values
dtypes: bool(1), float64(2), object(5)
但是,當我將數據幀導出到csv文件並手動搜索它們時,在兩個匹配的文件中都有user_uuid和date_key組合。 關於我為什么在聯接上存在這種不匹配的任何想法?
謝謝
在icloset
DataFrame上重置索引。 當您指定on
參數時,它會嘗試匹配列,但icloset
框架中沒有date_key
或user_uuid
列(因為它們在索引中),因此找不到匹配項。
definedRIDs.join(icloset.reset_index(),
on=['date_key','user_uuid'])
如果使用on
參數,則傳入的值應為列名。
看起來我只需要確保鍵上的類型都是dtype = object。
實際上,正確的解決方案是將沒有索引(左側)的框架連接到右側帶有多重索引的框架:
closet['date_key']=closet['date_key'].astype(str)
definedRIDS['date_key'] = definedRIDS['date_key'].astype(str)
icloset = closet.set_index(['date_key','user_uuid'])
RIDdata = definedRIDs.join(icloset,on=['date_key','user_uuid'],how='inner')
希望這可以幫助其他人以后不會犯此錯誤,並澄清索引的加入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.