合并两个文件中具有相同列值的行

时间:2019-02-01 11:54:36

标签: python python-3.x pandas

目前,我正在抓取亚马逊网站上的一些数据。我遇到的问题是我无法真正从同一页面上获取产品的所有数据。

我最终得到的是2个文件,这些文件的列标题相同,但列本身的数据不同。除了小东西以外,我几乎从未使用过熊猫,所以我对该地区的知识不是那么广。

例如,在一个.csv文件中,产品具有带有信息的“代码”,“名称”,“ url”,“大小”,而在另一个文件中,产品具有“代码”,“价格”,“ image1”,“ image2”,依此类推。

如果file2中的代码与file1中的代码相同,则最好的方法是将file2中的数据粘贴到file1(或仅创建一个新文件)。我可能会使用成千上万种不同的产品代码,所以越有效的方法越好。

下面我将链接两个文件作为示例

文件1:https://ufile.io/oojru

文件2:https://ufile.io/cytmq

我将上面的一些数据写成文本(不要使用所有标题,因为看起来不太好

文件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

2 个答案:

答案 0 :(得分:1)

我相信您需要dropna才能删除combine_firstNaN行:

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文件