如何在单个函数中返回两个数据帧

时间:2019-01-31 12:33:58

标签: python pandas function return

我正在通过api抓取数据,我需要通过1个函数同时获取2个数据帧。但是,我在下面编写的代码无法完成任务。如何修改它以便在一个函数中获得两个df?

def get_qa(question):
num = 1
row = []
people = []
for ans in question.answers:
     if num< question.answer_count:
            a = get_answer_data()
            b = get_author()
            s = {**a,**b}
            row.append(s)
            pt = get_people_detail()
            people.append(pt)
            num+=1
            #time.sleep(random.randint(0,2))
df_qa = pd.DataFrame(row)
df_people = pd.DataFrame(people)
return df_qa,df_people

--------更新-------- 感谢您所有的帮助。 使用a, b = get_qa(question)后,我可以成功获得两个df。但是,我得到的数据框似乎只收到列表中的最后一项。

<bound method NDFrame.add_prefix of       ans_id                         author_id author_name business  \
0  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   
1  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   
2  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   
3  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   
4  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   
5  572182013  16b179b9de836c121ace0aabdd2611a0         钱二胖     市场推广   

df的长度为corrent(原始数据包含6个项目)返回是否引起了问题? 还是我调用函数应该对失败负责的方式?

2 个答案:

答案 0 :(得分:0)

如果您的lhs也是一个元组,这实际上应该可以工作。

def get_qa():
    return 4, 5

a, b = get_qa()
print(a, b)

打印出

4 5

答案 1 :(得分:0)

除了缩进,我确信您没有做任何妥协似乎是错误的。调用函数时是否同时捕获了两个数据帧?您应该尝试以下操作。调用该函数只会在输出中显示第一个数据帧。

df_qa, df_people = get_qa(questions)