目前我正在亚马逊网站上抓取一些数据。我遇到的问题是我无法真正从同一页面获取产品的所有数据。
我最终得到的是 2 个文件,它们具有相同的列标题,但列本身的数据不同。除了一些小事情之外,我以前几乎从未使用过 pandas,所以我在该领域的知识并不是那么丰富。
例如,在一个 .csv 文件中,产品包含“代码”、“名称”、“网址”、“尺寸”等信息,但在另一个 .csv 文件中,产品包含“代码”、“价格”、“图像 1”、“图像 2”等。
如果 file2 中的代码与 file1 中的代码相同,最好的方法是什么,将 file2 中的数据粘贴到 file1 (或者只是创建一个新文件)。我可能会使用数以万计的不同产品代码,因此越有效的方法越好。
我将链接两个文件作为下面的示例
我将上面的一些数据写为文本(没有使用所有标题,因为它看起来不太好)
文件1
categoriaProducto codigoEspecifico codigoGenerico nombreProducto precioProducto
- B072L7PVNQ - - price1
- B01D9FKME6 - - price2
- B077Z5ST3P - - price3
- B00KLMFUKC - - price4
文件2
categoriaProducto codigoEspecifico codigoGenerico nombreProducto precioProducto
Clothing B072L7PVNQ 86K5PBAH name1 -
Clothing B01D9FKME6 86K5PBAH name2 -
Clothing B077Z5ST3P 86K5PBAH name3 -
Clothing B00KLMFUKC 86K5PBAH name4 -
对于上传的文件和文本,代码的顺序相同。值得注意的是,情况可能并非如此。
我还想补充一点,如果产品代码出现在 file1 中,该代码也会出现在 file2 中,但反之则不然。
我尝试从 file1 数据创建一个新列并将该列粘贴到 file2 数据帧中,然后保存文件。但后来我发现代码可能没有顺序,所以这种方法行不通。
编辑:我不太清楚我想要什么,我很抱歉。我想要得到的结果是这样的
categoriaProducto codigoEspecifico codigoGenerico nombreProducto precioProducto
Clothing B072L7PVNQ 86K5PBAH name1 price1
Clothing B01D9FKME6 86K5PBAH name2 price2
Clothing B077Z5ST3P 86K5PBAH name3 price3
Clothing B00KLMFUKC 86K5PBAH name4 price4
最佳答案
我相信你需要dropna
仅删除 combine_first
的 NaN
行:
df1= pd.read_csv('example1.csv')
df2= pd.read_csv('example2.csv')
df1 = df1.set_index('codigoEspecificoProducto').dropna(how='all')
df2 = df2.set_index('codigoEspecificoProducto').dropna(how='all')
df = df1.combine_first(df2)
关于python - 合并两个文件中的行(如果它们具有相同的列值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54478998/