我正在尝试从以下数据创建两个数据帧:
df = pd.DataFrame({'Product':['Prod1','Prod2','Prod3','Prod2','Prod5','Prod3']*4,
'Inv_Type': ['X', 'Y']*12,
'Quant': np.random.randint(2,20, size=24)})
df.sort_values('Product', inplace=True, ignore_index=True) --Help with visual
它们需要根据产品是否同时具有与它们相关联的X和Y,或者仅具有所有X或所有Y来进行分离
期望输出:
df1 = df[df['Product'] == 'Prod3']
df2 = df[df['Product'].str.contains('Prod1|Prod2|Prod5', na=False)]
我已经尝试过多次使用过滤器的groupby尝试,但我显然遗漏了一些东西
我们还可以使用布尔掩码和内置聚合函数(以提高执行速度)而不是自定义lambda函数(未优化且速度较慢),如下所示:
结果:
您可以创建一个自定义布尔值来
groupby
,并在字典中创建两个单独的数据帧。假设Inv_Type
中只有两个值,那么我们可以使用nunique
来fidn任何具有多个值的组印刷品:
相关问题 更多 >
编程相关推荐