熊猫数据框简单修改出错-重新发布

时间:2019-07-11 09:46:50

标签: python pandas

我之前问过类似的问题,可能没有提供足够的信息-因此没有得到完整的答案。

我要做的就是将一列的某些值乘以标量(听起来像一个简单的任务),似乎我试图编辑数据框的某种“视图”实例,例如在某些情况下没有发生更改。

这是代码:

def test(train_data,test_data):
    X_train=train_data[features].copy()
    y_train=train_data[label_col].copy()
    X_test=test_data[features].copy()
    y_test=test_data[label_col].copy()


    #mult=2
    print(mult) #0.7183144682062172
    print(factor_points) #6296296296296297

    print(X_test['f'].loc[test_data[benefit_type_feature]!=1].mean()) #0.02366651480994471 original avg
    X_test['f'].loc[test_data[benefit_type_feature]!=1]=X_test['f'].loc[test_data[benefit_type_feature]!=1]*mult
    print(X_test['f'].loc[test_data[benefit_type_feature]!=1].mean()) #0.02366651480994471 didn't change

    X_test['f'].loc[test_data[benefit_type_feature]!=1]=X_test['f'].loc[test_data[benefit_type_feature]!=1].apply(lambda x: x*mult)
    print(X_test['f'].loc[test_data[benefit_type_feature]!=1].mean()) #0.02366651480994471 didn't change

    X_test['f']*=2

    print(X_test['f'].loc[test_data[benefit_type_feature]!=1].mean()) #0.04733302961988942 changed 
    point_data=X_test.loc[test_data[benefit_type_feature]!=1]
    point_data['f']*=factor_points
    X_test.update(point_data)
    print(X_test['f'].loc[test_data[benefit_type_feature]!=1].mean()) #0.029802277908823057 changed

我删除了与IMO无关的部分。

如果值没有变化,那么它没有变化的原因可能是什么?逻辑应该没问题,这是另外一回事。我之前已经做过。 恐怕它会再次发生在我身上,我什至不会注意到。

谢谢!

0 个答案:

没有答案