代码之家  ›  专栏  ›  技术社区  ›  user7852656

减去相同行和列中但不同数据帧文件中的值

  •  1
  • user7852656  · 技术社区  · 6 年前

    我有两个数据集有许多列。我想为所有数据点减去同一行和列号中的值。以下是这两个数据的一小部分。

    数据1:

    4   6   8
    4403    4403    4403
    4640    4640    4640
    0   0   0
    12  0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    127 60  60
    357 275 317
    1882    2144    1838
    6726    6609    7915
    9398    11180   12737
    12784   18389   21361
    15863   20111   24469
    6739    10202   11897
    1684    1921    2735
    249 376 476
    47  103 70
    0   26  82
    17  0   18
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   18
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   12
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   18
    0   0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   12
    12  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    12  0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    12  0   12
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    12  0   0
    12  0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    13  0   0
    0   0   12
    0   0   0
    0   0   13
    

    数据2:

    4   6   8
    4400    4400    4400
    4750    4750    4750
    0   0   0
    12  0   0
    0   0   0
    0   12  0
    0   0   0
    0   25  12
    0   0   12
    12  13  0
    0   0   0
    0   12  0
    0   0   0
    12  0   0
    0   0   0
    0   12  0
    0   0   0
    12  0   0
    0   0   0
    0   0   12
    12  0   12
    0   0   0
    24  0   18
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   12
    0   12  0
    39  0   0
    0   12  0
    0   0   0
    0   12  12
    0   0   0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    0   0   0
    43  46  13
    6711    11323   9375
    91043   116679  123466
    241572  307822  310620
    250588  309749  314146
    105123  139651  141462
    16143   21264   23856
    2521    3648    3243
    1042    1022    1598
    576 910 525
    482 552 509
    229 416 425
    210 227 264
    120 149 99
    69  55  58
    47  0   17
    26  65  29
    0   20  35
    0   0   32
    0   0   14
    0   12  12
    12  38  12
    0   0   0
    18  0   12
    0   0   0
    0   13  0
    0   0   0
    0   18  0
    16  0   12
    12  0   0
    0   0   12
    12  0   12
    0   0   0
    0   23  0
    0   0   0
    0   0   0
    20  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   12
    0   12  12
    14  12  0
    0   0   0
    0   0   0
    0   0   12
    0   0   0
    0   12  0
    0   0   0
    0   0   0
    12  0   12
    0   0   0
    0   0   0
    0   18  0
    0   0   0
    12  0   39
    12  0   12
    13  0   12
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    24  0   14
    0   15  0
    0   16  0
    0   12  0
    12  0   12
    0   12  0
    0   0   0
    0   0   0
    14  13  0
    0   23  24
    0   0   0
    0   0   12
    0   16  0
    0   12  0
    0   0   12
    0   0   0
    0   0   0
    0   13  0
    0   0   0
    0   0   0
    16  0   0
    0   12  21
    0   0   0
    0   0   0
    0   12  13
    0   0   0
    0   0   0
    0   19  12
    0   0   0
    0   0   12
    0   12  0
    0   0   0
    0   12  12
    0   12  0
    0   0   0
    0   0   0
    12  24  0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   12  0
    12  0   0
    0   0   0
    0   0   29
    0   0   0
    0   0   12
    0   0   0
    0   12  0
    12  12  0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   12
    0   12  0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    12  0   0
    0   0   12
    13  16  12
    24  17  0
    0   0   0
    12  0   41
    0   0   0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    0   0   0
    14  12  0
    25  0   0
    0   12  0
    0   0   0
    0   15  0
    0   0   0
    12  0   0
    0   0   0
    0   0   0
    0   0   25
    27  0   0
    0   12  0
    0   22  0
    0   0   0
    0   0   0
    0   0   0
    

    对于所有数据,列名为“4”、“6”、“8”。

    因此,在数据1和2之间,列“4”中的行1的第一个减法将是=4403-4400。

    单独做一个比较容易,但我正在寻找一种方法来高效地为所有列执行此操作。

    有什么想法吗?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   David Gaertner    6 年前

    编辑:这里有两个答案。上面指出的短:

    result = Data1 - Data2

    如果你想用更复杂的计算代替减法,你可能需要一个更冗长的答案。它首先创建结果数据帧。它假设data1和data2是相同的形状。正如在python中常见的那样,还有其他方法可以做到这一点。我这次测试了。:-)

    result = pd.DataFrame(columns = ['4','6','8'], index = Data1.index)
    for index, row in Data1.iterrows():
        for col in Data1.columns:
            result.iloc[index][col] = Data1.iloc[index][col] - Data2.iloc[index][col]
    print (result)