在Dataframe子集之后替换值

时间:2017-06-26 07:19:03

标签: python pandas machine-learning scikit-learn cross-validation

我正在尝试在“X0”列上执行目标编码,我希望将X0中的每个唯一值(级别)替换为目标的中位数但是交叉验证的方式。问题是最后一行

  

train.loc [test_index,:]。loc [boolean,“X0”] = int(j [1] .y.median())

其中我将测试折叠子集,然后再次子集到该组以替换它似乎不起作用的中位数。任何有关将此中位数替换为该数据帧的帮助都将受到高度赞赏。

from sklearn.cross_validation import KFold
kf = KFold(train.shape[0], n_folds=NFOLDS, shuffle=True, random_state=SEED)
kf


for i ,(train_index,test_index) in enumerate(kf):
    train_dataset = train.iloc[train_index,:]
    for j in train_dataset.groupby('X0'):
        boolean = train.iloc[test_index].X0 == j[0]
        print train.loc[test_index,:].loc[boolean,"X0"] 
        print int(j[1].y.median())
        train.loc[test_index,:].loc[boolean,"X0"] = int(j[1].y.median())

我仍然只能看到内部的分类级别,而不是数值。

0 个答案:

没有答案