如果新 table 包含新数据 python pandas,则将行附加到现有 table

append rows to existing table if new table contain new data python pandas

我有两个 dataframes.First 一个是参考 df,第二个是新 df。

参考 df:

data = {'Machine': ['M1','M2','M2','M4','M4'],
        'Type': ['A1', 'D1', 'D2', 'A2','A5'],
        'Prod/RT': [0.002315, 0.012500, 0.046154, 0.008333,0.030000]}
df=pd.DataFrame.from_dict(data)
df

新的 df:

datanew = {'Machine': ['M11','M2','M22','M4','M44','M55','M21'],
           'Type': ['A1', 'D1', 'D2', 'A2','A5','B4','A2'],
           'Speed': ['L1', 'L2', 'L1', 'L7','L0','L9','L2'],
           'Weight': [12,45,87,45,83,25,23],
           'Prod': [200, 0, 180, 0,100,700,0],
           'RT': [43200,0,3900,0,15000,40000,0]}
df1=pd.DataFrame.from_dict(datanew)
df1['Prod/RT']=df1['Prod']/df1['RT']
df1

我想做的是检查新 df 是否包含 新机器和类型组合以及 'Prod/RT' 值将其作为新行追加到 ref。数据框。如果 新 Machine/Type 组合包含 'Prod/RT' 的缺失值,则无需更新该条目。

例如: 预期的 df 应该是:

我用 combine_first 尝试过,但没有给出预期的结果。

非常感谢您的支持!!!!!!!!

尝试 concat 然后 drop_duplicates

out = pd.concat([df,df1[df.columns]]).drop_duplicates().dropna()
  Machine Type   Prod/RT
0      M1   A1  0.002315
1      M2   D1  0.012500
2      M2   D2  0.046154
3      M4   A2  0.008333
4      M4   A5  0.030000
0     M11   A1  0.004630
2     M22   D2  0.046154
4     M44   A5  0.006667
5     M55   B4  0.017500