目前,我正在抓取亚马逊网站上的一些数据。我遇到的问题是我无法真正从同一页面上获取产品的所有数据。
我最终得到的是2个文件,这些文件的列标题相同,但列本身的数据不同。除了小东西以外,我几乎从未使用过熊猫,所以我对该地区的知识不是那么广。
例如,在一个.csv文件中,产品具有带有信息的“代码”,“名称”,“ url”,“大小”,而在另一个文件中,产品具有“代码”,“价格”,“ image1”,“ image2”,依此类推。
如果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 -
对于上载的文件和文本,代码的顺序相同。值得注意的是,事实并非如此。
我还要补充一点,如果产品代码出现在文件1中,则该代码也将出现在文件2中,但反之则不行。
我尝试根据file1数据创建一个新列,并将该列粘贴到file2 dataFrame中,然后保存该文件。但是后来我发现代码可能不正确,所以这种方式行不通。
编辑:我对自己想要的内容并不清楚,很抱歉。我想要得到的结果是这样的
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
答案 0 :(得分:1)
我相信您需要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)
答案 1 :(得分:0)
我将两个文件都放入pandas数据框中,然后使用dropduplicates方法。 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html
您可以指定要查找其重复项的列。默认情况下,所有列都必须匹配以标记重复项。但这是可配置的。
然后您可以将其保存到单个csv文件