如何根据数据集中的条件将值从字典复制到列表中?

时间:2019-07-04 05:16:34

标签: python python-3.x pandas list dictionary

我有一个数据集(由捐赠者选择),并且我试图根据类标签将值从字典复制到列表中。

例如:我的数据集有一个列[project_is_approved],基本上是二进制值 0或1

每行还具有一个名为[school_state]的列,该列基本上是状态名称为(eg: 'WV', 'NY' etc)的分类特征。

如果状态属于正 class(1)或负 class(0),我还有两个字典,每个状态的概率值。

{accepted_prob_clean_categories} 是一本字典,仅当键属于正类时,才将键作为状态列表,将值作为概率。

{rejected_prob_clean_categories} 是一本字典,只有当它属于否定类时,才将键作为状态列表,将值作为概率。

我想做的是

  • 我想遍历整个数据集,如果 给定行中的“ project_is_approved”值为1

  • 我想检查该特定行中的状态并附加 来自该状态的概率值 {accepted_prob_clean_categories} 到列表

  • 对于否定类同样适用,除​​了概率 值取自 {rejected_prob_clean_categories}

final_prob_clean_categories = []

mask = i['project_is_approved']
category = i.loc[mask,'school_state'].values
for i in X_train:
    if mask == 1:
        final_prob_clean_categories.append(accepted_prob_clean_categories[category])
    else:
        final_prob_clean_categories.append(rejected_prob_clean_categories[category])

我收到如下错误:

  

“字符串索引必须为整数'

accepted_prob_clean_categories = {}
{'AK': 0.8333333333333334,
 'AL': 0.860445205479452,
 'AR': 0.8321167883211679,
 'AZ': 0.848780487804878,
 'CA': 0.8565887714535053,
 'CO': 0.8295302013422818,
 'CT': 0.8615107913669064,
 'DC': 0.7959183673469388,
 'DE': 0.9004329004329005,
 'FL': 0.831678372487285,
 'GA': 0.8417372101582627,
'HI': 0.8606060606060606,
 'IA': 0.8493449781659389,
 'ID': 0.8299776286353467,
 'IL': 0.8522609596133932,
 'IN': 0.8541666666666666,
 'KS': 0.8382352941176471,
 'KY': 0.863013698630137,
 'LA': 0.8295384615384616,
 'MA': 0.8605678233438486,
 'MD': 0.8507905138339921,
 'ME': 0.8509316770186336,
 'MI': 0.8546132339235788,
 'MN': 0.8688118811881188,
 'MO': 0.8524203069657615,
 'MS': 0.8265895953757225,
 'MT': 0.8143712574850299,
 'NC': 0.8504589872668049,
 'ND': 0.9058823529411765,
 'NE': 0.8732394366197183,
 'NH': 0.865546218487395,
 'NJ': 0.8397606382978723,
 'NM': 0.8425414364640884,
 'NV': 0.8617256637168141,
 'NY': 0.8568246253543945,
 'OH': 0.8747002398081535,
 'OK': 0.8368841544607191,
 'OR': 0.8427230046948356,
 'PA': 0.8610445615716339,
 'RI': 0.8585365853658536,
 'SC': 0.8648134044173648,
 'SD': 0.8258706467661692,
 'TN': 0.8482456140350877,
 'TX': 0.8108108108108109,
 'UT': 0.8441330998248686,
 'VA': 0.8474452554744526,
 'VT': 0.7659574468085106,
 'WA': 0.8780332056194126,
 'WI': 0.8444084278768234,
 'WV': 0.8481375358166189,
 'WY': 0.8405797101449275}

rejected_prob_clean_categories是accepted_prob_clean_categories的补充。

if my X_train is like this:

school_state   project_is_approved
AK                   1
AK                   0
CA                   0
CO                   1

I need values in final_prob_clean_categories as follows:
[0.8333,0.166666,0.14341,0.82953.....]etc

所有这些概率值在{accepted_prob_clean_categories}和{rejected_prob_clean_categories}中可用

0 个答案:

没有答案