#pandas
#pandas
Вопрос:
Мне нужно выбрать имена столбцов, в которых количество больше 2. У меня есть этот набор данных:
Index | col_1 | col_2 | col_3 | col_4
-------------------------------------
0 | 5 | NaN | 4 | 2
1 | 2 | 2 | NaN | 2
2 | NaN | 3 | NaN | 1
3 | 3 | NaN | NaN | 1
Ожидаемым результатом является список: [‘col_1’, ‘col_4’]
Когда я использую
df.count() > 2
Я получаю
col_1 True
col_2 False
col_3 False
col_4 True
Length: 4, dtype: bool
Это код для тестирования
import pandas as pd
import numpy as np
data = {'col_1': [5, 2, np.NaN, 3],
'col_2': [np.NaN, 2, 3, np.NaN],
'col_3': [4, np.NaN, np.NaN, np.NaN],
'col_4': [2, 2, 1,1]}
frame = pd.DataFrame(data)
frame.count() > 2
Комментарии:
1. просто используйте:
df.loc[:,df.count()>2]
для столбцовdf.loc[:,df.count()>2].columns
Ответ №1:
Вы можете сделать это таким образом.
import pandas as pd
import numpy as np
data = {'col_1': [5, 2, np.NaN, 3],
'col_2': [np.NaN, 2, 3, np.NaN],
'col_3': [4, np.NaN, np.NaN, np.NaN],
'col_4': [2, 2, 1,1]}
frame = pd.DataFrame(data)
expected_list = []
for col in list(frame.columns):
if frame[col].count() > 2:
expected_list.append(col)
Ответ №2:
Использование dict
может легко решить эту проблему:
frame[[key for key, value in dict(frame.count() > 2).items() if value]]
Ответ №3:
Попробуйте:
(df.columns)[(df.count() > 2).values].to_list()