Как получить количество столбцов относительно их имен в pandas df

#python #pandas #dataframe #csv

Вопрос:

Я занимаюсь предварительной обработкой данных и управлением недостающими значениями.Я хочу установить порог для столбцов.Для одного столбца, если количество значений меньше 50,удалите столбец.

 import numpy as np
import pandas as pd
from pandas import DataFrame

df = pd.read_csv('cbc_updated_1.csv')
 

Затем я получаю количество столбцов.

 a = df.count(axis = 0)
print(a)
 

Он дает имена столбцов в соответствии с их количеством.

 IP ABN(RBC)RET Abn Scattergram       46
IP ABN(RBC)Reticulocytosis           23
IP ABN(PLT)Thrombocytosis            47
IP ABN(PLT)PLT Abn Scattergram        0
IP SUS(WBC)Blasts?                   57
IP SUS(WBC)Abn Lympho?               10
IP SUS(WBC)Left Shift?              190
IP SUS(WBC)Atypical Lympho?         126
IP SUS(RBC)RBC Agglutination?         0
IP SUS(RBC)Turbidity/HGB Interf?      9
IP SUS(RBC)Iron Deficiency?          27
IP SUS(RBC)HGB Defect?                3
IP SUS(RBC)Fragments?               168
IP SUS(PLT)PLT Clumps?               73
dtype: int64
 

Затем я хочу запустить цикл по приведенным выше данным, чтобы проверить мое пороговое состояние…
Но я не могу этого сделать..
Я попробовал следующий код..

 for i in a:
    if i < 50:
        print(i)
 

В результате я получил только значения,а не имена столбцов.Мне нужно и то, и другое.

 46
23
47
0
10
0
9
27
3
 

Как я могу отказаться от этого?

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

1. можете ли вы привести пример cbc_updated_1.csv до манипуляции и после манипуляции?

Ответ №1:

Попробуйте с этим:

 >>> a[a < 50]
IP ABN(RBC)RET Abn Scattergram      46
IP ABN(RBC)Reticulocytosis          23
IP ABN(PLT)Thrombocytosis           47
IP ABN(PLT)PLT Abn Scattergram       0
IP SUS(WBC)Abn Lympho?              10
IP SUS(RBC)RBC Agglutination?        0
IP SUS(RBC)Turbidity/HGB Interf?     9
IP SUS(RBC)Iron Deficiency?         27
IP SUS(RBC)HGB Defect?               3
dtype: int64
>>> 
 

Если вам нужна петля:

 for x in a[a < 50].reset_index().to_numpy().tolist():
    print(*x)
 

 IP ABN(RBC)RET Abn Scattergram 46
IP ABN(RBC)Reticulocytosis 23
IP ABN(PLT)Thrombocytosis 47
IP ABN(PLT)PLT Abn Scattergram 0
IP SUS(WBC)Abn Lympho? 10
IP SUS(RBC)RBC Agglutination? 0
IP SUS(RBC)Turbidity/HGB Interf? 9
IP SUS(RBC)Iron Deficiency? 27
IP SUS(RBC)HGB Defect? 3