字典映射返回Nan
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典映射返回Nan相关的知识,希望对你有一定的参考价值。
我有两个数据集,我想从表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
答案
试试大熊猫 merge
函数,并将 on
arg - 它是你想加入数据集的列。
Table_merged = pd.merge(Table_B, Table_A['Date', 'Wk_of_Year'], on='Date')
它将创建一个你期望的数据集。
Date Sales Shop Wk_of_Year
0 2020-01-01 100 A 1
1 2020-01-01 100 B 1
2 2020-01-01 100 C 1
3 2020-01-10 100 D 2
但如果你还想使用你的策略--使用pandas。insert
函数,这将在你现有的Table_B数据集中插入新的列,其结果是一样的。
date_wk_dct = {key: value for key, value in Table_A[['Date', 'Wk_of_Year']].get_values()}
Table_B.insert(3, "Wk_of_Year", [date_wk_dct[v] for v in iter(Table_B['Date'].get_values())], True)
这将会在你现有的Table_B数据集中插入新的列,结果是一样的。
Date Sales Shop Wk_of_Year
0 2020-01-01 100 A 1
1 2020-01-01 100 B 1
2 2020-01-01 100 C 1
3 2020-01-10 100 D 2
以上是关于字典映射返回Nan的主要内容,如果未能解决你的问题,请参考以下文章