Python 'для' l oop неправильно маркирует все диапазоны данных на одну метку - PullRequest
0 голосов
/ 17 марта 2020

У меня есть кадр данных в python 3, который я назвал customer, и целочисленная переменная с именем Age, представляющая возраст клиента. Я хотел создать пользовательские ячейки возраста, поэтому я использовал для l oop, но при запуске он помечает все как «от 25 до 45», несмотря на тот факт, что при взгляде на данные возраста отображается широкий диапазон возрастов. Я пытался возиться с формулировкой, но ничего не помогает. Есть идеи? Вот что я сделал.

Сначала я создал переменную AgeGroup, которая является клоном Age, чтобы заменить в l oop на метку, что я и делаю, потому что ей не нравилось создавать метку переменная с нуля в самом l oop. Может быть, это то, что сбивает меня с толку, но я не мог найти другой путь, и я осторожен, чтобы преобразовать в str.

customer['AgeGroup'] = str(customer.Age)

l oop это:

for a in customer['Age']:
    if a < 25:
        customer['AgeGroup'] = "Under 25"
    elif 25 <= a <= 45:
        customer['AgeGroup'] = "Between 25 and 45 (45 incuded)"
    elif 46 < a <= 55:
        customer['AgeGroup'] = "45 and 55 (55 included)"
    elif a > 55:
        customer['AgeGroup'] = "Over 55"

Когда я смотрю на счетчики значений возрастной группы после l oop, все они показывают «от 25 до 45», и, что удивительно, dtype указан в int64. Я, должно быть, упускаю что-то огромное.

Любая помощь будет очень признательна. Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Таким образом, вы зацикливаетесь только на значениях клиентов ['Age'], а не на фактических значениях клиентов, поэтому у вас нет доступа для обновления объекта customer во время l oop. Попробуйте это:

for customer in customers:
    a = customer['Age']
    if a < 25:
        customer['AgeGroup'] = "Under 25"
    elif 25 <= a <= 45:
        customer['AgeGroup'] = "Between 25 and 45 (45 incuded)"
    elif 46 < a <= 55:
        customer['AgeGroup'] = "45 and 55 (55 included)"
    elif a > 55:
        customer['AgeGroup'] = "Over 55"
0 голосов
/ 17 марта 2020

Я думаю, что вы хотели повторить customers, а не `customer:

for customer in customers.iterrows():
    a = customer['Age']
    if a < 25:
        customer['AgeGroup'] = "Under 25"
    elif 25 <= a <= 45:
        customer['AgeGroup'] = "Between 25 and 45 (45 incuded)"
    elif 46 < a <= 55:
        customer['AgeGroup'] = "45 and 55 (55 included)"
    elif a > 55:
        customer['AgeGroup'] = "Over 55"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...