У меня проблема с for . Как я могу перебрать for и добавить данные в список?

#python #python-3.x #pandas #dataframe #for-loop

#python #python-3.x #pandas #фрейм данных #for-цикл

Вопрос:

У меня есть этот фрейм данных (сжатый):

 year    month      name

2000    January    car
2000    January    bike
2000    February   train
2000    May        car
2001    January    bike
2001    February   car
2001    February   bike
2001    July       car
2002    January    car
2002    February   train
2002    March      bike
2002    July       car
 

Мне нужно добавить данные за 2001 год и февраль в список, для этого я создал следующий код.

 name2001 = []
for year in df['year']:
    if year == 2001:
        for month in df['month']:
            if month == 'February':
                for name in df['name']:
                    name2001.append(name)
 

Я выполнял отладку и получил эту ошибку:

 'Too large to show contents. Max items to show: 300'
 

Я изменил его на 10000 и получаю эту ошибку:

 'Too large to show contents. Max items to show: 10000'
 

Но я знаю, что необходимо добавить около 5000 данных.

Что не так с циклом for?

Комментарии:

1. Вы хотите добавить строку в свой фрейм данных?

2. Мне нужно добавить имена в этот список ‘name2001’, чтобы позже работать с этим списком с помощью matplotlib. Я не знаю, можно ли это сделать.

3. Итак, вы хотите создать список со столбцом name2001, это правильно?

4. О, данные из столбца name2001, который имеет соответствующее значение года 2001 и значение месяца Февраль?

5. Да, и я получаю только названия 2001 года и месяца февраль (в примере это будет автомобиль или велосипед). Это был бы второй вопрос.

Ответ №1:

Вы можете сделать, например:

 df[df.year.eq(2001) amp; df.month.str.contains('February')].name
 

это даст вам содержимое столбца name , в котором есть 2001 год в их year столбце и февраль в их month столбце.

Если нужен список:

 df[df.year.eq(2001) amp; df.month.str.contains('February')].name.to_list()
 

давая вам:

 ['car', 'bike']