为了账号安全,请及时绑定邮箱和手机立即绑定

如何将两个列表组合到字典中,并手动分配键的值

如何将两个列表组合到字典中,并手动分配键的值

ITMISS 2021-05-14 18:09:29
我有一个函数,它接受一个数据框,进行一些转换,然后将数字和分类列名作为列表返回。cat_cols, num_cols = Data_Type_And_Transformation(df_data_sample, 'MEAN')cat_cols = ['var1_m2_Transform', 'var2_m2_Transform', 'var2_m3_Transform', 'var3_m3_Transform', 'var5_m3_Transform', 'var8_m3_Transform', 'var9_m3_Transform']num_cols = ['ttl_change_3m', 'ttl_change_6m', 'base_rev_3m', 'csc_ttl_6m']然后,我试图创建一个字典,其键将是列名,值将是数据类型-NUM或CAT,如下所示:attribute_df_benford_cat = pd.DataFrame()attribute_df_benford_num = pd.DataFrame()attribute_df_cat['Attribute'] = cat_colsattribute_df_cat['Type'] = 'CAT'attribute_df_num['Attribute'] = num_colsattribute_df_num['Type'] = 'NUM'attribute_df = attribute_df_cat.append(attribute_df_num)attribute_df.set_index('Attribute',inplace = True)attribute_dict = OrderedDict(attribute_df.to_dict('index'))但这给了我以下形式的格言:Key                 Type    Size    Valuettl_change_3m       dict    1       {'Type': 'NUM'}ttl_change_6m       dict    1       {'Type': 'NUM'}base_rev_3m         dict    1       {'Type': 'NUM'}csc_ttl_6m          dict    1       {'Type': 'NUM'}var1_m2_Transform   dict    1       {'Type': 'CAT'}var2_m2_Transform   dict    1       {'Type': 'CAT'}var2_m3_Transform   dict    1       {'Type': 'CAT'}var3_m3_Transform   dict    1       {'Type': 'CAT'}var5_m3_Transform   dict    1       {'Type': 'CAT'}var9_m3_Transform   dict    1       {'Type': 'CAT'}var8_m3_Transform   dict    1       {'Type': 'CAT'}而我想要以下格式:Key                 Type    Size    Valuettl_change_3m       str     1       NUMttl_change_6m       str     1       NUMbase_rev_3m         str     1       NUMcsc_ttl_6m          str     1       NUMvar1_m2_Transform   str     1       CATvar2_m2_Transform   str     1       CATvar2_m3_Transform   str     1       CATvar3_m3_Transform   str     1       CATvar5_m3_Transform   str     1       CATvar9_m3_Transform   str     1       CATvar8_m3_Transform   str     1       CAT另外,我认为我正在做太多的步骤来获得结果,并且可能会有较短/有效的代码版本来做到这一点。有人可以帮我吗?
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

我认为您需要np.where


import numpy as np

 import pandas as pd

 df=pd.DataFrame({'Key':pd.Series(num_cols+cat_cols)})

 df['Value']=np.where(df['Key'].isin(cat_cols), 'CAT','NUM')

 #print(df)

    Key                 Value

#   ttl_change_3m       NUM

#   ttl_change_6m       NUM

#   base_rev_3m         NUM

#   csc_ttl_6m          NUM

#   var1_m2_Transform   CAT

#   var2_m2_Transform   CAT

#   var2_m3_Transform   CAT

#   var3_m3_Transform   CAT

#   var5_m3_Transform   CAT

#   var8_m3_Transform   CAT

#   var9_m3_Transform   CAT


查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号