Pandas:基于多列合并两个文件

2024-06-16 10:39:51 发布

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

我有两个文件,它们有3个公共列-日期、关键字ID、AdGroupId。我想基于这些列合并这两个文件,这样对于第一个文件中具有特定日期、关键字ID、adgroupid的每一行,如果第二个文件中有具有相同日期、关键字ID、adgroupid的对应行,然后在第二个文件中追加其余的值,如果不追加,则在其余列中追加null或-

第一个文件(这里的df1)有5900000行。第二个文件大约有100000行。我使用了下面的代码

 import pandas as pd

df1 = pd.read_csv(r"C:\Users\Rakshit Lal\Desktop\QVC Data\psnb_extract_daily\Final\cumulative_adwords_test.csv")
df2 = pd.read_csv(r"C:\Users\Rakshit Lal\Desktop\QVC Data\psnb_extract_daily\Final\Test_psnbfull.csv")

# Merge the two dataframes, using _ID column as key
df3 = pd.merge(df1, df2, on = ['Date', 'KeywordId', 'AdGroupId'])
df3.set_index('Date', inplace = True)

# Write it to a new CSV file
df3.to_csv('CSV3.csv')

# Write it to a new CSV file
df3.to_csv('CSV3.csv')

我的最后一个文件——csv3只包含605277行,因为某些原因,它应该包含5900000行(如文件1所示)。我相信我在使用合并函数时犯了一个错误。有人能帮我解决哪里出了问题,我应该修改什么吗


Tags: 文件csvtoidreadas关键字users
1条回答
网友
1楼 · 发布于 2024-06-16 10:39:51

如果不指定合并方式,则需要进行内部联接,但实际上需要进行左联接。您可以使用“左”合并:

df3 = pd.merge(df1, df2, on = ['Date', 'KeywordId', 'AdGroupId'], how = 'left')

相关问题 更多 >