与多索引数据帧连接创建空字段[Pandas]

2024-05-29 06:01:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将pandas中的两个数据帧连接到两个字段“date_key”和“user_uuid”,但当我这样做时,我只得到一个空的集合,尽管我在表中搜索匹配项时会有重叠。在

数据帧1(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

数据帧2(definedRIDs)看起来像:

^{pr2}$

我确保去掉definedRIDs的索引,使其看起来像文档中的this example。在

由于某些原因,当我试图在文档中复制示例时,在合并字段(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_uid和date_键组合。你知道我为什么会有这种不匹配吗?在

谢谢你


Tags: 数据keyinpandasdateuuidcountout
2条回答

看来我只需要确保键上的类型都是dtype=object。在

正确的解决方案实际上是将没有索引的帧(在左侧)连接到右侧具有multindex的帧:

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')

希望这有助于其他人以后不要犯这个错误,并用索引澄清一下连接。在

重置icloset数据帧上的索引。当您指定on参数时,它会尝试匹配列,但在icloset帧中没有date_key或{}列(因为它们在索引中),因此它找不到匹配项。在

definedRIDs.join(icloset.reset_index(),
                 on=['date_key','user_uuid'])

如果使用on参数,则传入的值应该是列名。在

相关问题 更多 >

    热门问题