我在pandas / python中有两个相同的数据帧(a和b),只是值不同:
a:
date a1 a2 a3
01.01.2020 2 2 2
02.01.2020 3 3 3
03.01.2020 4 4 4
b:
date a1 a2 a3
01.01.2020 1 1 1
01.01.2020 2 2 2
01.01.2020 3 3 3
我需要一个-b并希望看到结果c:
date a1 a2 a3
01.01.2020 1 1 1
01.01.2020 1 1 1
01.01.2020 1 1 1
a-b不起作用,我不知道怎么做。你能帮我吗?谢谢!
答案 0 :(得分:2)
您可以set_index
:
new_df = (a.set_index('date') - b.set_index('date')).reset_index()
但是,仅当两个数据框之间的日期相同且每个数据框内的日期不同时,该方法才有效。
在另一种情况下(如示例数据所示),您可以执行以下操作:
c = b.copy()
c.iloc[:,1:] = a.iloc[:, 1:] - b.iloc[:,1:]
答案 1 :(得分:0)
尝试使用df1.subtract(df2)
。简单而优雅。
答案 2 :(得分:0)
假设两个数据框中的日期相同,
您可以使用df.sub
:
df = a.set_index('date').sub(b.set_index('date')).reset_index()
输出:
date a1 a2 a3
0 01.01.2020 1 1 1
1 01.01.2020 1 1 1
2 01.01.2020 1 1 1