简体   繁体   English

如何使用另一个数据框添加数据框并基于列更新公共值

[英]how to add a dataframe with another dataframe and updated common values based on a column

my first data frame-我的第一个数据框-

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

second data frame-第二个数据框-

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

I want dataframe dataframe Like this (all values of df2 and uncommon values of df1)-我想要这样的数据框数据框(df2的所有值和df1的不常见值)-

        CONTRACT    Net_Qty
    0   Tom         30
    1   nick        40
    2   krish       19
    4   jack        18
    2   amit        45
    3   joy         54

I tried like this-我试过这样-

cols = list(df1.columns)
            df1.loc[df1.CONTRACT.isin(
                df2.CONTRACT), cols] = df2[cols]
            print(df1)

but its not working fine.......但它不能正常工作.......

Can anyone please suggest a better way-任何人都可以请提出一个更好的方法 -

Use pd.concat and drop_duplicates :使用pd.concatdrop_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

I resolved it with this code我用这段代码解决了它

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.

相关问题 如何根据公共值将数据框中列的值添加到另一个数据框中? 熊猫/蟒蛇 - 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 add common columns values based on a column? 如何根据公共列将 dataframe 的列值替换为另一个 dataframe 的值? - How do I replace column values of a dataframe with values of another dataframe based on a common column? 根据python另一列中的公共值在数据框的一列中划分2个值 - Dividing 2 values in a column of dataframe based on common value in another column in python 根据另一个数据框的日期范围将列值添加到数据框 - Add column values to a dataframe based on date range of another dataframe 在基于另一个 dataframe 计算值之后,将一列添加到 dataframe - Add a column to a dataframe after calculating values based on another dataframe 根据来自另一个数据框的值将列添加到数据框 - Add column to dataframe based on values from another dataframe 如何根据第一个数据帧列中的值从另一个数据帧添加新列? - How to add new column from another dataframe based on values in column of first dataframe? 如何基于另一个数据框设置列值 - How to set column values based on another dataframe 如何根据另一个宽数据框中的匹配和范围值在一个长数据框中添加一列? - How to add a column in one long dataframe based on a match and range values in another wide dataframe?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM