Еще один способ взглянуть на это с помощью POSIX ACL, он должен поддерживаться вашей файловой системой, однако вы можете иметь тонкую настройку всех команд в Linux так же, как у вас есть один и тот же элемент управления в Windows (только без более удобный пользовательский интерфейс). link
Еще одна вещь, которую нужно изучить, - PolicyKit .
Вам нужно будет сделать довольно много поискового запроса, чтобы получить все, что работает, это определенно не сила Linux на данный момент.
import pandas as pd
import numpy as np
# Sample data
d = np.array([[18, 1, 0, 1.0, 5.0, 0, 1],
[89, 3, 1, 1.0, 1.0, 1, 1],
[100, 4, 7, 0.0, 1.0, 1, 0],
[200, 0, 1, 0.0, 0.0, 1, 0],
[300, 1, 1, 0.0, 1.0, 1, 1],
[19, 1, 1, 1.0, 1.0, 6, 1]])
df = pd.DataFrame(data=d, columns = ['Age','Prod1','Prod2', 'Day 4', 'Day 5', 'Day 6', 'Region'])
df = df.drop(df[~df.loc[:, 'Prod1':'Region'].isin([0, 1]).all(axis=1)].index)
print(df)
должен дать ожидаемый результат:
Age Prod1 Prod2 Day 4 Day 5 Day 6 Region
3 200.0 0.0 1.0 0.0 0.0 1.0 0.0
4 300.0 1.0 1.0 0.0 1.0 1.0 1.0
Комментарий к вашему коду: Ваши условия неверны, но это не причина, почему вы получают тот же кадр данных. Это происходит потому, что вы не передаете df.drop(prodindex)
переменной, то есть:
# Your code
prodindex = df[ (df.loc['Prod1':'Region'] > 1) & (df.loc['Prod1':'Region'] < 0) ].index
df = df.drop(prodindex)
print(df)
Empty DataFrame
Columns: [Age, Prod1, Prod2, Day 4, Day 5, Day 6, Region]
Index: []
Если вы хотите удалить строки, содержащие значения 1 или 0, следующие работы:
df.loc[~df.loc[:, 'Prod1':'Region'].isin([0, 1]).any(axis=1), :]
Это должно работать:
df[df.loc[:, 'Prod1':'Region'].isin([0, 1]).all(axis=1)]