Python - Как создать новые столбцы на основе расчетов одного столбца. Расчет флагов UserAccountControl

Я хотел сопоставить конкретный блок if в java

   ...
   ...
   if(isTrue){
       doAction();

   }
...
...
}

. Если я использую regExp

if \(isTrue(.|\n)*}

, он включал замыкающую скобку для блока метода, поэтому я использовал

if \(!isTrue([^}.]|\n)*}

, чтобы исключить заключительную скобку из соответствия шаблону.

0
задан tom250 16 January 2019 в 09:30
поделиться

2 ответа

Не уверен, почему имена столбцов отличаются от документации Microsoft, которую вы цитировали. Но предполагая, что у вас все в порядке с переименованием столбца в соответствии с этими документами, вы можете использовать numpy bitwise_and

df = pd.read_csv('data2.csv')
flags = {
    'SCRIPT'           : 0x0001,
    'ACCOUNTDISABLE'   : 0x0002,
    'HOMEDIR_REQUIRED' : 0x0008,
    'LOCKOUT'          : 0x0010,
    'PASSWD_NOTREQD'   : 0x0020,
    #.... (add more flags here as required, I just copy-pasted from the docs)
}   

for (f, mask) in flags.items():            
    df[f] = np.bitwise_and(df['column3'], mask) / mask
print(df)

. Это приводит к: которые были соединены вместе как шестнадцатеричное число с использованием битовой маски - довольно распространенный шаблон.

0
ответ дан Aditya Santoso 16 January 2019 в 09:30
поделиться

Вы не можете использовать созданную вами функцию, чтобы делать то, что вы хотите. Например, каждый раз, когда вы делаете df['SPECIALUSER']=1, он присваивает 1 целому столбцу, а не только строке, которую вы считаете целью. Чтобы назначить каждое значение правильной строке, вы должны назначать значения для каждого столбца отдельно:

df['SPECIALUSER'] = np.where(df['column3'] >= 1000, 1, 0)
df['NORMALUSER'] = np.where((df['column3'] - 1000) >= 512, 1, 0)
...

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

0
ответ дан Gozy4 16 January 2019 в 09:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: