条件内部联接错误:“只能比较具有相同标签的系列对象”?

2024-05-10 12:43:02 发布

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

我试图在两个数据帧之间进行简单的内部连接

我的第一个数据框是product data,它是包含产品子集信息的较大产品数据表的子集。我使用SKU Barcode作为唯一标识每个产品的主键。这是productDataRows.info

RangeIndex: 1489 entries, 0 to 1488
Data columns (total 7 columns):
 #   Column       Non-Null Count  Dtype   
---  ------       --------------  -----   
 0   SKU Barcode  1489 non-null   float32 
 1   Brand        1489 non-null   category
 2   Title        1489 non-null   object  
 3   Size         1489 non-null   category
 4   Category     1489 non-null   category
 5   Image URL    1489 non-null   object  
 6   Cost         1489 non-null   float32 
dtypes: category(3), float32(2), object(2)

我的第二个数据框架是市场研究信息,涉及产品的个人销售数据。一个产品将有许多关于它的记录,因此SKU条形码在该表中充当外键。这明显大于另一个表。这是marketResearch.info

RangeIndex: 28522436 entries, 0 to 28522435
Data columns (total 5 columns):
 #   Column         Dtype   
---  ------         -----   
 0   SKU Barcode    float32 
 1   Platform Code  category
 2   Price          int16   
 3   Rank           int32   
 4   Epoch Time     int64   
dtypes: category(1), float32(1), int16(1), int32(1), int64(1)
memory usage: 516.8 MB

由于productDataRows仅包含全部SKU条形码的子集,因此我需要查找marketResearch中与productDataRows表中的SKU条形码相对应的所有记录,这些记录的平台代码与局部变量platform匹配并获取关于它们的市场调查,同时过滤掉市场调查中不在产品数据行表中的任何记录

我尝试了一些方法,这是我最新想到的:

marketResearchRows = marketResearch[(marketResearch['SKU Barcode'] == productDataRows['SKU Barcode']) & (marketResearch['Platform Code'] == platform)]

这将抛出错误:

ValueError: Can only compare identically-labeled Series objects

我读到这可能是因为这两个表没有相同的列,但我如何才能绕过这一点?我曾尝试合并这些表,然后删除值,但我的市场研究表太大,这一事实在执行此操作时引发了许多MemoryError错误

有人会认为这是一项简单的任务,但我已经尝试了很多事情,遇到了很多麻烦


Tags: columns数据object市场产品记录nullbarcode