【发布时间】:2020-08-05 18:12:02
【问题描述】:
我有两个数据集,我想从表 A 的两列创建一个字典,然后在表 B 中创建一个新列,其执行类似于 excel vloopup
表 A
Date Wk of Year ...Other columns
2020-1-1 1
2020-1-2 1
2020-1-10 2
2020-1-11 2
表 B
Shop Date Sales ...Other columns
A 2020-1-1 100
B 2020-1-1 100
C 2020-1-1 100
A 2020-1-10 100
Expected Result
Shop Date Sales Wk of Year
A 2020-1-1 100 1
B 2020-1-1 100 1
C 2020-1-1 100 1
A 2020-1-10 100 2
我从表 A 创建字典的代码
name = pd.to_datetime(Table A['date'])
wk = Table A['Wk of Year']
dict= dict(zip(name,wk))
Table B['wk'] = pd.to_datetime(Table B ['Date'].map(dict)
实际结果:
Shop Date Sales Wk of Year
A 2020-1-1 100 NaT
B 2020-1-1 100 NaT
C 2020-1-1 100 Nat
A 2020-1-10 100 Nat
【问题讨论】:
-
首先,不要在
dict= dict(zip(name,wk))中使用dict作为名称,因为您正在践踏内置名称。其次,您不能只在整数列上调用pd.to_datetime;这就是您收到NaT的原因。你为什么要使用pd.to_datetime? -
您能否修改您的示例,使其成为有效代码?很多语法是不正确的,我可以保证
pd.to_datetime不会返回NaT,而是会抛出错误,除非你指定errors='coerce',我没有看到。当示例不起作用时,很难提供解决方案。
标签: python python-3.x pandas sklearn-pandas