我正在尝试通过与数据库中的字典进行键值匹配来添加新标签列。我用map
函数来做到这一点。但是,新添加的列的值都具有NAN
,这意味着匹配在我的代码中不起作用。我该如何纠正?为什么会这样呢?我打算通过将字典中的键与pandas数据框中的键进行匹配来添加新的标签列。
最少数据:
import numpy as np
import pandas as pd
df = pd.DataFrame(data=[list('EEEIEEIIEI'),
['AR', 'AUC', 'CA', 'CN', 'MX', 'MX', 'AR', 'IT', 'UK', 'RU'],
['ALBANIA', 'PAKISTN', 'UGANDA', 'FRANCE', 'USA', 'RUSSIA', 'COLOMBIA', 'KAZAK', 'KOREA', 'JAPAN'],
[20230, 20220, 20120, 20230, 20230, 20220, 20230, 20120, 20130, 20329],
list(np.random.randint(10, 100, 10)),
list(np.random.randint(10, 100, 10))]
).T
df.columns =['ID', 'cty', 'cty_ptn', 'prod_code', 'Quantity1', 'Quantity2']
print(df)
这是我的代码:
my_dict={'20230':'Gas',
'20220':'Water',
'20210': 'Refined',
'20120':'Oil',
'20239':'Other'}
df['prod_label']=df['prod_code'].map(my_dict)
如何修复NAN
新分配的列?任何想法?谢谢
由于该列prod_code
是a,因此int
您必须在映射之前转换为str
with astype
:
my_dict={'20230':'Gas',
'20220':'Water',
'20210': 'Refined',
'20120':'Oil',
'20239':'Other'}
df['prod_label']=df['prod_code'].astype(str).map(my_dict)
ID cty cty_ptn prod_code Quantity1 Quantity2 prod_label
0 E AR ALBANIA 20230 45 84 Gas
1 E AUC PAKISTN 20220 68 10 Water
2 E CA UGANDA 20120 48 45 Oil
3 I CN FRANCE 20230 11 93 Gas
4 E MX USA 20230 62 81 Gas
5 E MX RUSSIA 20220 27 49 Water
6 I AR COLOMBIA 20230 55 97 Gas
7 I IT KAZAK 20120 32 93 Oil
8 E UK KOREA 20130 63 88 NaN
9 I RU JAPAN 20329 99 39 NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句