#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