python - 合并两个文件中的行(如果它们具有相同的列值)

标签 python python-3.x pandas

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

我最终得到的是 2 个文件,它们具有相同的列标题,但列本身的数据不同。除了一些小事情之外,我以前几乎从未使用过 pandas,所以我在该领域的知识并不是那么丰富。

例如,在一个 .csv 文件中,产品包含“代码”、“名称”、“网址”、“尺寸”等信息,但在另一个 .csv 文件中,产品包含“代码”、“价格”、“图像 1”、“图像 2”等。

如果 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

最佳答案

我相信你需要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)

关于python - 合并两个文件中的行(如果它们具有相同的列值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54478998/

相关文章:

python - Pytz 上的错误 - IndexError : list index out of range

python - 使用内存引用重载 [] python 运算符和链接方法

python - 如何将多索引更改为平面列名

python : nested json to dataframe

python - 根据列表中的值向 DataFrame 添加新列

python - 如何切片 Pandas 系列中每个元素的不同部分?

python - 为什么我收到 SQLAlchemy 错误 "__table_args__ value must be a tuple, dict, or None"

python - 在 python 中调用静态方法而不是类名本身是个好主意吗

python-3.x - 使用 Python 重命名目录中的一堆文件的问题

python - 用 Python 3 控制鼠标?