我的 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)
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)