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

2024-10-03 23:29:11 发布

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

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

我最终得到的是两个文件,它们的列标题相同,但列本身的数据不同。我以前几乎从未使用过熊猫,除了一些小东西,所以我在这方面的知识不是很丰富。你知道吗

例如,在一个.csv文件中,产品具有“code”“name”“url”“size”和信息,但在另一个文件中,产品具有“code”“price”“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              -

对于上传的文件和文本,代码的顺序是相同的。值得注意的是,情况可能并非如此。你知道吗

我还要补充一点,如果一个产品代码出现在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

Tags: 文件数据代码产品file1file2clothingcodigoespecifico
2条回答

我相信您需要^{}来只删除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)

我将把这两个文件放入一个数据帧中,然后使用dropduplicates方法。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html

可以指定要查找重复项的列。默认情况下,所有列必须匹配才能标记重复项。但这是可配置的。你知道吗

然后可以将其保存到单个csv文件中

相关问题 更多 >