我有两个数据框df_new
和df_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
答案 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]