Я считаю, что нужно пропустить цикл, потому что если train
равно DataFrame
, тогда dataset
являются именами столбцов, очевидно, string
s:
np.random.seed(100)
train = pd.DataFrame(np.random.randint(10, size=(3,3)), columns=['age','col1','col2'])
print (train)
age col1 col2
0 8 8 3
1 7 7 0
2 4 2 5
for dataset in train:
print (dataset)
age
col1
col2
train.loc[(train['age'] > 15) & (train['age'] <= 25), 'new'] = 1
train.loc[(train['age'] > 25) & (train['age'] <= 35), 'new'] = 2
train.loc[(train['age'] > 35) & (train['age'] <= 45), 'new'] = 3
train.loc[(train['age'] > 45) & (train['age'] <= 55), 'new'] = 4
train.loc[ train['age'] > 55, 'new'] = 5
Лучше использоватьpd.cut
:
r = [0, 25, 35, 45, 55, 120]
g = [1,2,3,4,5]
train['new'] = pd.cut(train['age'], bins=r, labels=g)