Не уверен, что этот вопрос поставлен правильно. Когда вы говорите «столбцы», которые соответствуют определенным критериям, неясно, хотите ли вы только данные, содержащиеся в этом столбце, или если вы хотите, чтобы строки, которые заполняли критерии, основывались на значении конкретного столбца.
Вот образец кадра данных, в котором я храню информацию о бейсболисте. Я использую iPython, поэтому In
и Out
являются ссылками на подсказки оболочки iPython. Я использую метод .head(5)
, чтобы показать первые пять ведущих строки данных в dataframe:
In [45]: lahman_data.head(5)
Out[45]:
name handedness height weight avg HR
0 Tom Brown R 73 170 0.000 0
1 Denny Lemaster R 73 182 0.130 4
2 Joe Nolan L 71 175 0.263 27
3 Denny Doyle L 69 175 0.250 16
4 Jose Cardenal R 70 150 0.275 138
Если бы я хотел, чтобы создать новый кадр данных, содержащий все строки, которые удовлетворяют критерии любого игрок, который весит> 160 фунтов:
In [46]: weight_gt_160 = lahman_data[lahman_data['weight'] > 160]
In [46]: weight_gt_160.head(5)
Out[46]:
name handedness height weight avg HR
0 Tom Brown R 73 170 0.000 0
1 Denny Lemaster R 73 182 0.130 4
2 Joe Nolan L 71 175 0.263 27
3 Denny Doyle L 69 175 0.250 16
5 Mike Ryan R 74 205 0.193 28
Обратите внимание, что у меня все еще есть данные из каждого столбца, но только строки в столбце, соответствующие моим указанным критериям, находятся в новом фрейме данных weight_gt_160
.
Но, если вы только хотели создать dataframe, который имел только данные о весе, но и предусматривался вес больше 160:
In [48]: weight_only_gt_160 = lahman_data.weight[lahman_data['weight']> 160]
In [51]: weight_only_gt_160.head(5)
Out[51]:
0 170
1 182
2 175
3 175
5 205
Name: weight, dtype: int64
я использовал синтаксис, необходимый для охвата результаты попадают только в столбец «вес» и ничего больше.
В ваших вопросах упоминается «выбор столбцов», но на самом деле вы выбираете значения данных в столбцах, которые соответствуют критериям. «Выбор столбцов» больше похож на то, что вы делаете общее утверждение о «состоянии» столбца и пытаетесь создать логику для действия в этом обобщенном состоянии.
В любом случае, надеюсь, что это поможет!
Что вы делаете с col? Вы понимаете, что вы просто повторяете имена столбцов, а 'for col in df' будет делать то же самое? –
'for col in df.columns [1:]:' также просто получит имена столбцов, игнорируя первый –
небольшой примерный фреймворк с ожидаемыми результатами, который сэкономит много времени здесь ... – JohnE