在检查第一列的ID时合并csv列

2024-09-30 20:35:07 发布

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

我有一个4 csv文件从网上商店数据库导出,我需要合并他们的列,我可能会设法单独做。但问题是要匹配正确的列

第一个文件:

"ep_ID","ep_titleCS","ep_titlePL".....

"601","Kancelářská židle šedá",NULL.....

...

第二个文件:

"pe_photoID","pe_productID","pe_sort"

"459","603","1"


...

第三个文件:

"epc_productID","epc_categoryID","epc_root"

"2155","72","1"


...

第四个文件:

"ph_ID","ph_titleCS"...

"379","5391132275.jpg"

。。。你知道吗

我需要匹配这些行,以便将具有相同“ep\u ID”和“epc\u productID”的行合并在一起,并将具有相同“ph\u ID”、“pe\u photoID”的行也合并在一起。我真的不知道从哪里开始,希望我写的可以理解

更新: 我正在使用:

files = ['produkty.csv', 'prirazenifotek.csv', 'pprirazenikategorii.csv', 'adresyfotek.csv']
dfs = []

for f in files:
    df = pd.read_csv(f,low_memory=False)
    dfs.append(df)

first_and_third =pd.merge(dfs[0],dfs[1],left_on = "ep_ID",right_on="pe_photoID")

first_and_third.to_csv('new_filepath.csv', index=False)

好的,这段代码可以工作,但它以另一种方式做了两件事:

  1. 例如,当文件1中有一行ID=1,而下一个文件2中有5行bID=1时,它会在最后一个文件中创建5行,我希望有一行在第二个文件中的每一行bID=1中都有多个值。有可能吗?

  2. 它似乎正在删除一些行。。。除非我把“复制品”处理掉。。。


Tags: 文件csvidfalsedffilesphep
1条回答
网友
1楼 · 发布于 2024-09-30 20:35:07

您可以使用pandasmerge方法将csv合并在一起。在您的问题中,您只提供第1和第3个文件之间的密钥,以及第2和第4个文件之间的密钥。不确定是否需要一个包含所有键的巨型表,如果需要,则需要找到另一个中间键,可能是尚未列出的(?)。你知道吗

import pandas as pd

files = ['path_to_first_file.csv', 'second_file.csv', 'third_file.csv', 'fourth_file.csv']
dfs = []

for f in files:
    df = pd.read_csv(f)
    dfs.append(df)

first_and_third = dfs[0].merge(dfs[2], left_on='ep_ID', right_on='epc_productID', how='left')
second_and_fourth = dfs[1].merge(dfs[3], left_on='pe_photoID', right_on='ph_ID', how='left')

如果要将数据帧保存回文件,可以执行以下操作:

first_and_third.to_csv('new_filepath.csv', index=False)

index=False假设数据帧上没有索引集,并且不希望数据帧的行号包含在最终csv中。你知道吗

相关问题 更多 >