“总数据集”的我仅适用于我的测试集,而不会更改我的训练集上的数据点。有人可以帮忙解释一下吗?
total=[train,test]
for dataset in total:
dataset.loc[dataset['Fare'] <= 18, 'Fare'] = 9
dataset.loc[(dataset['Fare'] > 18) & (dataset['Fare'] <= 37.0042), 'Fare'] = 11
dataset.loc[(dataset['Fare'] > 37.0042) & (dataset['Fare'] <= 63.3583), 'Fare'] = 22
dataset.loc[(dataset['Fare'] > 63.3583) & (dataset['Fare'] <= 93.5), 'Fare'] = 33
dataset.loc[(dataset['Fare'] > 93.5) & (dataset['Fare'] <= 120), 'Fare'] = 44
dataset.loc[(dataset['Fare'] > 120) & (dataset['Fare'] <= 164.8667), 'Fare'] = 55
dataset.loc[(dataset['Fare'] > 164.8667) & (dataset['Fare'] <= 263), 'Fare'] = 66
dataset.loc[dataset['Fare'] > 263, 'Fare'] =77
total=[train,test]
答案 0 :(得分:0)
熊猫数据帧是可变的。 从here中阅读以下内容:
数据的可变性和复制所有熊猫的数据结构均为 可变值(它们包含的值可以更改),但并不总是 大小可变。系列的长度不能更改,但是,对于 例如,可以将列插入到DataFrame中。但是,广阔的 大多数方法产生新对象并保留输入数据 无动于衷。总的来说,我们希望在合理的地方支持不变性。
您可以如下更改代码:
total=[train,test]
for i in range(2):
total[i].loc[dataset['Fare'] <= 18, 'Fare'] = 9
total[i].loc[(dataset['Fare'] > 18) & (dataset['Fare'] <= 37.0042), 'Fare'] = 11
total[i].loc[(dataset['Fare'] > 37.0042) & (dataset['Fare'] <= 63.3583), 'Fare'] = 22
total[i].loc[(dataset['Fare'] > 63.3583) & (dataset['Fare'] <= 93.5), 'Fare'] = 33
total[i].loc[(dataset['Fare'] > 93.5) & (dataset['Fare'] <= 120), 'Fare'] = 44
total[i].loc[(dataset['Fare'] > 120) & (dataset['Fare'] <= 164.8667), 'Fare'] = 55
total[i].loc[(dataset['Fare'] > 164.8667) & (dataset['Fare'] <= 263), 'Fare'] = 66
total[i].loc[dataset['Fare'] > 263, 'Fare'] =77
# no need for this statement! total=[train,test]