Skip to content
Minsing Log
Go back

English Edition

When Returning Multiple Values in Functional Programming with the `apply` Function

Programming & CS

Situation

Here is more detailed code related to the text above!

result = make_passages.apply(self.__make_passages_and_retrieval_gt, axis=1)
make_passages['passages'], self.ingest_data['retrieval_gt'], self.ingest_data['retrieval_gt_order'] = zip(*result)
            
            
def __make_passages_and_retrieval_gt(self, row):
    passages = []
    retrieval_gt = []
    retrieval_gt_ord = []
    ord_rank = 0
    for passage_idx, passage_text in enumerate(row['passage_text']):
        passages.append(Passage(
            id=str(row['query_id']) + '_' + str(passage_idx),
            content=passage_text,
            filepath=self.file_path,
            metadata_etc={
                'url': row['url'][passage_idx]
            }
        ))
        # Make retrieval gt and retrieval gt order.(27 is max count of passage texts in v2.1)
        if row['is_selected'][passage_idx] == 1:
            retrieval_gt.append(str(row['query_id']) + '_' + str(passage_idx))
            retrieval_gt_ord.append(27 - ord_rank)
            ord_rank += 1

    return passages, retrieval_gt, retrieval_gt_ord

How can you receive the multiple values returned by the self.__make_passages_and_retrieval_gt function?

Solution

result = make_passages.apply(self.__make_passages_and_retrieval_gt, axis=1)
make_passages['passages'], self.ingest_data['retrieval_gt'], self.ingest_data['retrieval_gt_order'] = zip(*result)

As in the code above, you can use zip and unpacking~

공개 여정 구독

글이 올라오면 이메일로 보내드릴게요.

개발, 창업, 배움, 실패와 회고를 짧고 솔직하게 기록합니다. 검색으로 스쳐가는 독자가 아니라 여정을 따라오는 팬을 만들기 위한 뉴스레터입니다.

뉴스레터는 준비 중입니다. 그동안 RSS 로 구독하거나 이메일 로 알림을 요청해 주세요.


Share this post:

Comments

Sign in with GitHub to leave a comment.


Previous Post
RAGchain Glossary
Next Post
Creating multiple dataframes with apply