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

2024-07-06 18:52:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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,按和计数分组。 要过滤的数据帧与这两种情况相同。如果我创建这个函数,就不会得到预期的结果。你知道吗

你能帮我修一下吗?你知道吗


Tags: columns函数dfindexvarmytypecount
1条回答
网友
1楼 · 发布于 2024-07-06 18:52:26

为了使代码正常工作,应该首先将掩码应用于数据帧。然后对过滤后的数据帧进行操作。你知道吗

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并返回两者。你知道吗

相关问题 更多 >