我是python的新手,希望在扩展我正在研究的项目时获得一些帮助。
我有一个包含25列的数据集。我需要通过3个特定列的唯一组合来过滤该数据。然后将每个唯一过滤器命名为一个子集(最好只是3列中的每个值的组合)。
因此,我有代码来查找仅需要的三列的唯一组合。我认为这将是一个好的开始。
unique = m_nlsn[['Market Break','Demographic', 'Playback Period']].drop_duplicates(subset=['Market Break','Demographic', 'Playback Period'])
现在,我需要知道如何使用这些独特的组合来过滤和命名子集?例如,如果我有10个唯一的组合,则需要基于这3个特定列中的值的10个不同的子集。如下所示,我正在手动过滤唯一组合。
comp_hh_live = m_nlsn.loc[(m_nlsn['Market Break'] == "Composite")
& (m_nlsn['Demographic'] == "Household")
& (m_nlsn['Playback Period'] == "Live | TV with Digital | Linear with VOD")]
非常感谢所有帮助。
答案 0 :(得分:0)
使用字典存储可变数量的变量
在这种情况下,您可以将dict
与groupby
一起使用。这样做的好处是您不需要显式地计算唯一组合,因为GroupBy
对象可以解决这个问题。
d = dict(tuple(m_nlsn.groupby(['Market Break', 'Demographic', 'Playback Period'])))
然后您可以通过元组键访问各个组。将它们分配给变量也很简单。例如:
comp_hh_live = d[('Composite', 'Household', 'Live | TV with Digital | Linear with VOD')]
如果您觉得这太冗长,建议您使用Categorical Data来设置和重命名类别。使用此方法还将通过降低内存使用量提供其他好处。