Ошибка при передаче аргумента функции в pandas DataFrame.apply - PullRequest
0 голосов
/ 17 апреля 2019

Я использую функцию 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)

, то это работает без проблем.В чем может быть проблема с первым подходом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...