如何在熊猫中减去两个相同的数据帧

时间:2020-06-01 18:52:41

标签: python pandas

我在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不起作用,我不知道怎么做。你能帮我吗?谢谢!

3 个答案:

答案 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