У меня есть фрейм данных len (df) = 143213 из 47 столбцов. Я хочу добавить новый столбец, который может содержать несколько значений, разделенных запятыми.
В настоящее время я делаю:
df['1'] = np.where((df.column_1 == ‘VALUE’) & (df.column_2 != df.column_3), 'AMOUNT ', '')
df['2'] = np.where((df.column_1 == ‘VALUE’) & (df.column_4 != df.column_5), 'QTY ', '')
df['3'] = np.where((df.column_1 == ‘VALUE’) & (df.column_2 != df.column_6), 'CC ', '')
df['4'] = np.where((df.column_1 == ‘VALUE’) & (df.column_12 <=0), 'MT ' , '')
……….
df['9'] = np.where((df.column_1 == ‘VALUE_2’) & (df.column_7 != df.column_9), 'SPP ', '')
df['10'] = np.where((df.column_1 == ‘VALUE_2’) & (df.column_7 != df.column_10), 'TC', '')
df['11'] = np.where((df. column_1 == ' VALUE_2') & (df.column_11 <=df.column_13) & (df.column_11>df.column_14) & (df.column_12 <=0 ), 'R_AMT ', '')
… и так далее
Я создал около 33 df ['33 '] в зависимости от различных условий.
После этого я делаю:
df['new'] = df['1'] + df['2'] +df['3']+ df['4']+ df['5']+ df['6'] + df['7'] + df['8'] + df['9']+ df['10'] + df['11']+ ………d[‘33’]
df['new1'] = df['new'].str.strip(' ')
df['required'] = df['new1'].apply(lambda x: x.replace(' ', ','))
, а затем отбрасываю столбцы.
Есть ли лучший способ сделать это? Я попробовал np.select, но мне кажется, что это не лучший вариант, когда могут быть выполнены несколько условий.