![](/img/trans.png)
[英]how to add values of a column in dataframe to another dataframe based on common values? pandas/python
[英]how to add a dataframe with another dataframe and updated common values based on a column
我的第一個數據框-
df1 = pd.DataFrame({'CONTRACT':['Tom', 'nick', 'krish', 'jack'],
'Net_Qty':[20, 21, 19, 18]})
CONTRACT Net_Qty
0 Tom 20
1 nick 21
2 krish 19
3 jack 18
第二個數據框-
df2 = pd.DataFrame({'CONTRACT':['Tom', 'nick', 'amit', 'joy'],
'Net_Qty':[30, 40, 45, 54]})
CONTRACT Net_Qty
0 Tom 30
1 nick 40
2 amit 45
3 joy 54
我想要這樣的數據框數據框(df2的所有值和df1的不常見值)-
CONTRACT Net_Qty
0 Tom 30
1 nick 40
2 krish 19
4 jack 18
2 amit 45
3 joy 54
我試過這樣-
cols = list(df1.columns)
df1.loc[df1.CONTRACT.isin(
df2.CONTRACT), cols] = df2[cols]
print(df1)
但它不能正常工作.......
任何人都可以請提出一個更好的方法 -
使用pd.concat
和drop_duplicates
:
out = pd.concat([df2, df1]).drop_duplicates('CONTRACT', ignore_index=True)
print(out)
# Output
CONTRACT Net_Qty
0 Tom 30
1 nick 40
2 amit 45
3 joy 54
4 krish 19
5 jack 18
我用這段代碼解決了它
df1 = pd.DataFrame({'CONTRACT':['Tom', 'nick', 'krish', 'jack'],'Net_Qty':[20, 21, 19, 18]})
df2 = pd.DataFrame({'CONTRACT':['Tom', 'nick', 'amit', 'joy'],'Net_Qty':[30, 40, 45, 54]})
df_merge = pd.merge(df1, df2, on = 'CONTRACT', how = 'outer')
df_merge[['Net_Qty_x', 'Net_Qty_y']] = df_merge[['Net_Qty_x', 'Net_Qty_y']].replace({np.nan : None})
condition_list = [df_merge['Net_Qty_y'].values != None]
choice_list = [df_merge['Net_Qty_y']]
df_merge['Net_Qty'] = np.select(condition_list, choice_list, df_merge['Net_Qty_x'])
df_merge['Net_Qty'] = df_merge['Net_Qty'].astype(int)
df_merge = df_merge[['CONTRACT', 'Net_Qty']]
df_merge
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.