2016-12-05 1 views
-1

У меня есть dataframe с столбцами, которые являются всеми логическими значениями (1 или 0), но есть некоторые столбцы с недопустимыми значениями внутри таких, как; 111, 10, 11. Мне нужно очистить данные, удалив строку данных с недопустимым значением внутри нее. Но перед мойкой из НЕРАСПРОСТРАНЕНИЯ булевых значений, то первый столбец Возрастной и мне нужно, чтобы очистить ряды от, помещая их в диапазоне 18-150, потому что есть ценности, такие как 700 или 600.Очистка небулевых значений в dataframe в Python

cleandata4bestdeal2=cleandata4bestdeal.dropna(axis=0,how=any,inplace = False) 

Я уже удалил строки со значениями NaN, но я использую выше, чтобы попытаться удалить все небулевые значения.
CleanDataFrame

+0

Можете ли вы дать нам некоторые данные? – blacksite

+0

Кроме того, почему вы используете 'pandas.DataFrame.dropna()', когда эти логические значения явно не 'nan'? – blacksite

+0

Я добавил снимок экрана из приведенных выше данных. И я использовал dropna() и избавился от значений NaN, но не избавился от небулевых значений. –

ответ

0
# create some sample data, since none was provided 
>>> df = pd.DataFrame({'Age': [15, 700, 600, 150, 125, 32, 45, 43, 56, 1002], 'Boolean': ['001', '100', '0', '1', '1', '010', '110', '1', '0', '0']}) 
>>> print(df) 
    Age Boolean 
0 15  001 
1 700  100 
2 600  0 
3 150  1 
4 125  1 
5 32  010 
6 45  110 
7 43  1 
8 56  0 
9 1002  0 

# keep only those rows for which the 'Age' column is in the inclusive range [18, 150] 
>>> new_df = df[df['Age'].isin(range(18, 151))] 
>>> print(new_df) 
    Age Boolean 
3 150  1 
4 125  1 
5 32  010 
6 45  110 
7 43  1 
8 56  0 

# finally, keep only those boolean values that are of length 1 
# (i.e. exclude rows with 'Boolean' values like '110' or '010') 
>>> new_df = new_df[new_df['Boolean'].map(len) == 1] 
>>> print(new_df) 
    Age Boolean 
3 150  1 
4 125  1 
7 43  1 
8 56  0 
+0

Я тоже пробовал эту штуку. Как я могу сделать это для нескольких столбцов? Большое вам спасибо за этот кусок! Могу ли я просто добавить запятую в ['Boolean', 'New Columns']? –

+0

Хорошо, что не работает, нужно ли мне вводить это требование для каждого столбца? Создайте 10 новых фреймов данных? –

+0

Мне нужно удалить небулевые значения из нескольких столбцов. Как и то, что вы имели в приведенном выше примере, но говорите, что есть еще один столбец с именем Boolean2 с плохими данными вместе с 1 и 0, которые мне нужно очистить. Я хотел бы сделать это в одной строке кода, если это возможно. До сих пор я немного смущен тем, как я могу это сделать. –

Смежные вопросы