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将是相同的。您是否尝试使用不同的掩码和输出摘要?在回答中,您应该在代码中描述您所做的工作。您可以添加注释中的文本作为代码的说明。