Я использую функцию pandas
DataFrame.apply
, чтобы создать больше столбцов, но я нажимаю ValueError
.Ниже мой код
def find_processes(rule, g_df):
diff_ids = list(map(int,rule['actual_rule'].replace('=>','#').split('#')))
filtered = g_df[[set(diff_ids).intersection(row) == set(diff_ids) for row in g_df['Diff_No']]].reset_index()
process_list = list(filtered.Process_Id)
return '#'.join(process_list), len(process_list)
, и я передаю вышеупомянутую функцию в качестве параметра для применения функции следующим образом
out_df[['processes','num_processes']] = out_df.apply(find_processes, axis=1, result_type="expand", args=(group_df))
, и я получаю следующую ошибку
ValueError Traceback (последний вызов был последним) в 2 group_df = diff_df.groupby ('Process_Id') ['Diff_No']. Apply (list) .to_frame (). Reset_index () 3 ----> 4 out_df [['процессы ',' num_processes ']] = out_df.apply (find_processes, axis = 1, result_type = "раскрыть", args = (group_df)) 5 #out_df [' процессы '], out_df [' num_processes '] = zip (*out_df ['actual_rule']. map (find_processes)) 6 #find_processes ('48 # 382 => 235 # 195 => 387 # 300 => 381 => 323 # 164 # 166 # 263 # 7 # 298 # 304 # 338# 115 # 93 ')
~ / anaconda3 / lib / python3.7 / site-packages / pandas / core / frame.py в применении (self, func, axis, широковещательный, raw, уменьшите, result_type,args, ** kwds) 6484 result_type = type_type, 6485 args = args, -> 6486 kwds = kwds) 6487 return op.get_result () 6488
~ / anaconda3 / lib / python3.7 / site-packages/pandas/core/apply.py в frame_apply (объект, функция, ось, трансляция, сырье,Reduce, result_type, ignore_failures, args, kwds) 29 raw = raw, Reduce = Reduce, result_type = result_type, 30 ignore_failures = ignore_failures, ---> 31 args = args, kwds = kwds) 32 33
~/anaconda3/lib/python3.7/site-packages/pandas/core/apply.py в init (self, obj, func, широковещательный, необработанный, уменьшенный, тип_результата, ignore_failures, args, kwds) 39self.raw = raw 40 self.ignore_failures = ignore_failures ---> 41 self.args = args or () 42 self.kwds = kwds или {} 43
~ / anaconda3 / lib / python3.7 /site-packages / pandas / core / generic.py в ненулевое (self) 1476 повысить ValueError («Значение истинности {0} неоднозначно.«1477» Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "-> 1478 .format (self. class . name )) 1479 1480 bool = ненулевое
ValueError: Истинное значение DataFrame неоднозначно. Используйте a.empty, a.bool(), a.item (), a.any () или a.all ().
Но если я позвоню как
out_df[['processes','num_processes']] = out_df.apply(find_processes, axis=1, result_type="expand", g_df = group_df)
, то это работает без проблем.В чем может быть проблема с первым подходом?