如果为数字列,则减去2个数据框;用于文本使用最新数据框

时间:2019-11-11 22:13:47

标签: pandas

我有两个数据框df_newdf_old,它们的字段编号和名称相同。如果单元格位于数字字段中,我想从df_old中减去df_new。如果单元格在文本字段中,我只想使用df_new值。

我正在尝试将结果保存在称为更改的单独数据框中。

我需要在以下公式上合并dtype检查条件的帮助,因此它仅适用于数字字段。

  df_new.set_index('Index').subtract(df_old.set_index('Index'), fill_value=0)

    Part    Qty     Stock   Notes
0   AAA     40  10  yyy
1   BBB     40  10  yyy
2   CCC     50  20  yyy
3   DDD     40  10  
4   EEE     40  10  
5   FFF     40  10  

OLD

    Part    Qty     Stock   Notes
0   AAA     40  10  xxx
1   BBB     40  10  xxx
2   CCC     40  10  xxx
3   DDD     40  10  
4   EEE     40  10  
5   FFF     40  10  

更改

Part    Qty     Stock   Notes
0   AAA     0   0   yyy
1   BBB     0   0   yyy
2   CCC     10  10  yyy
3   DDD     0   0   
4   EEE     0   0   
5   FFF     0   0   

1 个答案:

答案 0 :(得分:1)

那又怎么样:

from pandas.api.types import is_numeric_dtype

to_subtract = [column for column, dtype in new_df.dtypes.items() if is_numeric_dtype(dtype)]
new_df[to_subtract] = new_df[to_subtract] - old_df[to_subtract]