Любой набор переменных также может быть завершен в классе. Переменные «Variable» могут быть добавлены к экземпляру класса во время выполнения, напрямую обращаясь к встроенному словарю через атрибут __dict__.
Следующий код определяет класс Variables, который добавляет переменные (в этом случае атрибуты) к своему экземпляру во время построения. Имена переменных берутся из указанного списка (который, например, мог быть сгенерирован программным кодом):
# some list of variable names
L = ['a', 'b', 'c']
class Variables:
def __init__(self, L):
for item in L:
self.__dict__[item] = 100
v = Variables(L)
print(v.a, v.b, v.c)
#will produce 100 100 100
Параметр thresh
для dropna
, вам просто нужно передать длину вашего df - количество желаемых значений NaN
в качестве вашего порога:
In [13]:
dff.dropna(thresh=len(dff) - 2, axis=1)
Out[13]:
A B
0 0.517199 -0.806304
1 -0.643074 0.229602
2 0.656728 0.535155
3 NaN -0.162345
4 -0.309663 -0.783539
5 1.244725 -0.274514
6 -0.254232 NaN
7 -1.242430 0.228660
8 -0.311874 -0.448886
9 -0.984453 -0.755416
Таким образом, приведенное выше приведет к потере любого столбца, который не соответствует критериям длины df (количество строк) - 2 как число значений, отличных от Na.
Вы можете использовать понимание условного списка:
>>> dff[[c for c in dff if dff[c].isnull().sum() < 2]]
A B
0 -0.819004 0.919190
1 0.922164 0.088111
2 0.188150 0.847099
3 NaN -0.053563
4 1.327250 -0.376076
5 3.724980 0.292757
6 -0.319342 NaN
7 -1.051529 0.389843
8 -0.805542 -0.018347
9 -0.816261 -1.627026
Я рекомендую drop
-метод. Это альтернативное решение:
dff.drop(dff.loc[:,len(dff) - dff.isnull().sum() <2], axis=1)
Вот возможное решение:
s = dff.isnull().apply(sum, axis=0) # count the number of nan in each column
print s
A 1
B 1
C 3
dtype: int64
for col in dff:
if s[col] >= 2:
del dff[col]
Или
for c in dff:
if sum(dff[c].isnull()) >= 2:
dff.drop(c, axis=1, inplace=True)
len(df)
должна бытьlen(dff)
– pyan 19 June 2015 в 12:09df[col_name_list].fillna(...)
, чтобы применить только thresh к этому подмножеству и применить к другим столбцамdf[df.columns.difference(col_name_list)].filna(....)
– EdChum 20 September 2017 в 07:32