我之前问过类似的问题,可能没有提供足够的信息-因此没有得到完整的答案。
我要做的就是将一列的某些值乘以标量(听起来像一个简单的任务),似乎我试图编辑数据框的某种“视图”实例,例如在某些情况下没有发生更改。
这是代码:
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无关的部分。
如果值没有变化,那么它没有变化的原因可能是什么?逻辑应该没问题,这是另外一回事。我之前已经做过。 恐怕它会再次发生在我身上,我什至不会注意到。
谢谢!