我有一个 X 数据框,
DT_X = dt.Frame({
'date':['2020-09-01','2020-09-02','2020-09-03'],
'temp':[35.3,32.9,43.2]
})
Out[4]:
| date temp
-- + ---------- ----
0 | 2020-09-01 35.3
1 | 2020-09-02 32.9
2 | 2020-09-03 43.2
[3 rows x 2 columns]
另一个数据框 Y 为,
DT_Y = dt.Frame({
'stop_date' : ['2020-08-01','2020-09-01','2020-09-03','2020-09-07'],
'is_arrested':[True,False,False,True]
})
Out[6]:
| stop_date is_arrested
-- + ---------- -----------
0 | 2020-08-01 1
1 | 2020-09-01 0
2 | 2020-09-03 0
3 | 2020-09-07 1
[4 rows x 2 columns]
现在我想对 X 和 Y 执行 JOIN 操作,因为我应该在 X 数据帧上分配一个键,
DT_X.key='date'
Out[8]:
date | temp
---------- + ----
2020-09-01 | 35.3
2020-09-02 | 32.9
2020-09-03 | 43.2
[3 rows x 2 columns]
接下来我将 X 和 Y 加入为 ,
DT_Y[:,:,join(DT_X)]
在这里它抛出一个错误,
In [9]: DT_Y[:,:,join(DT_X)]
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-9-a3bc1690fb98> in <module>
----> 1 DT_Y[:,:,join(DT_X)]
ValueError: Key column `date` does not exist in the left Frame
当然DT_Y 中不存在日期,它的列名为stop_date。
在这种情况下如何执行连接操作??即列名不匹配。
注意:
解决此问题的方法是将 DT_Y 的列名更改为
DT_Y.names = {'stop_date':'date'}
DT_Y[:,:,join(DT_X)]
加入的 DT 可以被视为,
Out[11]:
| date is_arrested temp
-- + ---------- ----------- ----
0 | 2020-08-01 1 NA
1 | 2020-09-01 0 35.3
2 | 2020-09-03 0 43.2
3 | 2020-09-07 1 NA
[4 rows x 3 columns]
这是预期的输出:
Out[13]:
| stop_date is_arrested temp
-- + ---------- ----------- ----
0 | 2020-08-01 1 NA
1 | 2020-09-01 0 35.3
2 | 2020-09-03 0 43.2
3 | 2020-09-07 1 NA
[4 rows x 3 columns]