Python 如何在用户函数中返回两个数据帧

Python 如何在用户函数中返回两个数据帧,python,pandas,function,dataframe,group-by,Python,Pandas,Function,Dataframe,Group By,我的目的是创建如下函数: def function(x): mask_1 = (x["var_1"] == 0) & (x["var_2"] == 0) df_1 = x[mask_1] df_1 = x[['A','B']].groupby(['A']).count().reset_index() df_1.rename(columns={'B':'my_fan_type_1'}, inplace=True) mask_2 = (x["var_

我的目的是创建如下函数:

def function(x):
    mask_1 = (x["var_1"] == 0) & (x["var_2"] == 0) 
    df_1 = x[mask_1]
    df_1 = x[['A','B']].groupby(['A']).count().reset_index()
    df_1.rename(columns={'B':'my_fan_type_1'}, inplace=True)
    mask_2 = (x["var_1"] == 0) & (x["var_2"] == 1)
    df_2 = x[['A','B']].groupby(['A']).count().reset_index()
    df_2.rename(columns={'B':'my_fan_type_2'}, inplace=True)
    return df_1, df_2


df_1,df_2 = df_to_be_filtered.apply(function, axis=1)
简而言之,我有一个dataframe,我想创建一个函数,首先过滤一些行,然后基于这些行创建两个dataframe,按和计数分组。 要筛选的数据帧与这两种情况相同。如果我创建这个函数,我不会得到预期的结果


你能帮我修复它吗?

为了让你的代码正常工作,掩码应该首先应用到数据帧上。然后对过滤后的数据帧进行操作

def function(x):
    # construct df_1
    mask_1 = (x["var_1"] == 0) & (x["var_2"] == 0) 
    df_1 = x[mask_1][['A','B']].groupby(['A']).count().reset_index()
    df_1.rename(columns={'B':'my_fan_type_1'}, inplace=True)

    # construct df_2
    mask_2 = (x["var_1"] == 0) & (x["var_2"] == 1)
    df_2 = x[mask_2][['A','B']].groupby(['A']).count().reset_index()
    df_2.rename(columns={'B':'my_fan_type_2'}, inplace=True)

    return df_1, df_2

df_1,df_2 = function(df)

上面的代码对原来的代码做了最小的更改,分别构造df1和df2并返回两者。

您得到了什么?你期待什么?也许你的问题在于你的计算。在函数中使用
print()
可以查看变量中不同时刻的内容。如果没有创建函数,为什么要在函数中使用
df\u attive\u pm
?也许它应该是
df_1
而不是
df_attive_pm
除了前面提到的df_attive_pm@furas之外,你的面具实际上没有被使用。除了列名之外,您的df1和df2将是相同的。您是否尝试使用不同的掩码和输出摘要?在回答中,您应该在代码中描述您所做的工作。您可以添加注释中的文本作为代码的说明。