我有兩個幾千行的資料框,就像下面兩個資料框:

我希望第一個資料框中目標列的值移動到第二個資料框中,只要第一個和第二個資料框中的廣告系列名稱相同。我的意思是類似于以下資料框:

uj5u.com熱心網友回復:
您必須在左側使用 df_1 進行左連接,然后使用 df_1 中現有的目標列來填充 join 產生的空值。
df_1 = pd.DataFrame()
df_2 = pd.DataFrame()
df_1['campaign'] = ['a', 'b', 'c', 'd']
df_1['goal'] =['order', 'order', 'off', 'order']
df_2['campaign'] = ['a', 'b', 'c']
df_2['goal'] = ['Subscription', 'order', 'Subscription']
# left join
df = df_1.merge(df_2.rename(columns={'goal': 'new_goal'}), on=['campaign'], how='left')
# replace nulls
df['new_goal'].fillna(df['goal'], inplace=True)
df
--- ---------- ------- --------------
| | campaign | goal | new_goal |
--- ---------- ------- --------------
| 0 | a | order | Subscription |
| 1 | b | order | order |
| 2 | c | off | Subscription |
| 3 | d | order | order |
--- ---------- ------- --------------
您可以選擇所需的列并根據需要重命名它們
df_final = df[['campaign', 'new_goal']].rename(columns={'new_goal': 'goal'})
uj5u.com熱心網友回復:
這將覆寫 df1 中的值
import pandas as pd
df1 = pd.DataFrame({'campaign':['a','b','c','d'],'goal':['order','order','off','order',]})
df2 = pd.DataFrame({'campaign':['a','b','c','d'],'goal':['Subscription','order','Subscription','order',]})
df2.merge(df1, how= 'left')
>> campaign goal
0 a Subscription
1 b order
2 c Subscription
3 d order
uj5u.com熱心網友回復:
您可以為此使用 pandas.DataFrame.merge:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html
df1 = pd.DataFrame({'campaign': ['a','b','c','d'], 'goal': ['order','order','off','order']})
df2 = pd.DataFrame({'campaign': ['a','b','c'], 'goal': ['subscription','order','subscription']})
df_out=pd.merge(df2,df1,on='campaign',how='left',suffixes=('_df2','_df1'))
結果:
campaign goal_df2 goal_df1
0 a subscription order
1 b order order
2 c subscription off
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/403847.html
標籤:
