我的 python 数据表连接函数有什么问题?

what wrong with my python datatable join function?

Table 销售额包含三列: “a”、“b”、“sum_sales_c”

Table 规范包含三列: “a”、“b”、“sum_c”、“sum_d”

# -*- coding: utf-8 -*-

import datatable as dt
from datatable import f, min, max,by,join

if __name__ == '__main__':
   sales_01 = dt.fread("sales_01.csv")
   print(sales_01)
   spec_01 = dt.fread("spec_01.csv")
   print(spec_01)
   spec_01.key = ["a","b"]
   sales_01[:, :, join(spec_01)]
   print(sales_01)

我只想加入两个 table 与列“a”和“b”,但规范 table“sum_c”和“sum_d”加入失败。

印刷品销量table:

   |     a      b  sum_sales_c
   | int32  int32        int32
-- + -----  -----  -----------
 0 |     1      2            1
 1 |     1      3            2
 2 |     2      1            7
 3 |     2      3            5
 4 |     3      4            6
 5 |     3      5            7
 6 |     3      6            8
 7 |     4      1            9
 8 |     5      2           10
 9 |     6      1           11

打印规格 table:

   |     a      b  sum_c  sum_d
   | int32  int32  int32  int32
-- + -----  -----  -----  -----
 0 |     1      2    202    500
 1 |     1      3    203    501
 2 |     2      1    409   1005
 3 |     2      3    206    504
 4 |     3      4    207    505
 5 |     3      5    208    506
 6 |     3      6    209    507
 7 |     4      1    210    508
 8 |     5      2    211    509
 9 |     6      1    212    510

在我使用 spec_01.key = ["a","b"] 并打印 join table 之后,看起来像 table spec "sum_c" and "sum_d”丢失。我不知道哪里出错了。

打印连接table.

   |     a      b  sum_sales_c
   | int32  int32        int32
-- + -----  -----  -----------
 0 |     1      2            1
 1 |     1      3            2
 2 |     2      1            7
 3 |     2      3            5
 4 |     3      4            6
 5 |     3      5            7
 6 |     3      6            8
 7 |     4      1            9
 8 |     5      2           10
 9 |     6      1           11

我的期望是“a”,“b”,“sum_sales_c”,“sum_c”,“sum_d”。 如何修改我的 python 代码?

从实现来看,join 行实际上不是 in-place,而是 returns 一个新的数据表框架(例如,参见 join test)。所以需要收集结果,不要直接在最后打印sales_01:

join_res = sales_01[:, :, join(spec_01)]
print(join_res)