2 回答
TA贡献1796条经验 获得超4个赞
我会创建一个额外的列来执行mergeon。据我所知,合并是根据产品名称完成的,没有首字母缩略词。
df1['Campaign_j'] = df1['Campaign'].map(lambda x: ' '.join(x.split()[3:]))
df2['Campaign_j'] = df2['Campaign'].map(lambda x: ' '.join(x.split()[2:]))
print(df1)
print(df2)
df3 = df1.merge(df2,how='left',on=['Campaign_j'],suffixes=('','_x')).drop_duplicates('Campaign_x')[['Campaign','Sales','Spend']]
加入后,我们将从第一个 Campaign 列 (Campaign_x) 中删除重复项,最后选择所需的列。我没有添加该date列,因为它对这个问题没有影响。输出:
Campaign Sales Costs
0 AMZ CT BR Leather Shoes ABCDEFG1234 10 5
2 AMZ CT NB Leather Shoes ABCDEFG1234 20 6
4 AMZ OG BR Bag HGIJK567 30 7
5 AMZ OG NB Bag HGIJK567 Desktop 40 8
TA贡献1808条经验 获得超4个赞
如果我正确理解你的问题
是的,你可以。但是不在其中一个数据框中的行留空。
让我举个例子:如果你有两个数据框First.csv并且Second.csv如下:
第一个数据框:
A, B, C
1, 2, 3
2, 3, 4
第二个数据框:
A, C
1, 3
2, 4
import pandas as pd
df_a = pd.read_csv('First.csv')
df_b = pd.read_csv('Second.csv')
您可以使用:
df_row_merged = pd.concat([df_a, df_b], ignore_index=True).
合并两个数据框。df_row_merged 将如下所示:
A, B, C
1, 2.0, 3
2, 3.0, 4
1, , 3
2, , 4
我希望这对你有帮助。
添加回答
举报