Ошибки округления с плавающей запятой. 0,1 не могут быть представлены точно в базе-2, как в базе-10, из-за недостающего простого коэффициента 5. Так же, как 1/3 принимает бесконечное число цифр для представления в десятичной форме, но составляет «0,1» в базе-3, 0.1 принимает бесконечное число цифр в базе-2, где оно не находится в базе-10. И компьютеры не имеют бесконечного объема памяти.
Я думаю, вы можете использовать subset
, созданную из list
CONT
:
print df
age fnlwgt capital-gain
0 a 9th 5
1 b 9th 6
2 c 8th 3
CONT = ['age','fnlwgt']
print df[CONT]
age fnlwgt
0 a 9th
1 b 9th
2 c 8th
print df[CONT].count()
age 3
fnlwgt 3
dtype: int64
print df[['capital-gain']]
capital-gain
0 5
1 6
2 3
Возможно, лучше, чем list
есть dictionary
, который создается to_dict
:
d = df[CONT].count().to_dict()
print d
{'age': 3, 'fnlwgt': 3}
print d['age']
3
print d['fnlwgt']
3
try:
for column_name, column in df.transpose().iterrows():
if column_name in CONT:
print(df[column_name].count())
else:
print('')
edit:
Для более точного ответа на ваш вопрос: вы можете использовать переменные для выбора cols двумя способами: df[list_of_columns]
вернет DataFrame с подмножество cols в list_of_columns
. df[column_name]
вернет серию для column_name
Далее будет напечатан счетчик каждого столбца в фрейме данных, если он является подмножеством вашего списка CONT.
CONT = ['age', 'fnlwgt', 'capital-gain', 'capital-loss']
df = pd.DataFrame(np.random.rand(5, 2), columns=CONT[:2])
>>> df
age fnlwgt
0 0.079796 0.736956
1 0.120187 0.778335
2 0.698782 0.691850
3 0.421074 0.369500
4 0.125983 0.454247
Выберите подмножество столбцов и выполните преобразование.
>>> df[[c for c in CONT if c in df]].count()
age 5
fnlwgt 5
dtype: int64