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
我希望這對你有幫助。
添加回答
舉報