2015-06-01 42 views
1

我正在寻找一种方法来运行两个条件熊猫DataFrame groupby方法。我有很多日志来解析,我有以下单一条件groupby方法,但有没有办法有两个条件groupby方法?Python熊猫两个条件数据框groupby运行排序

DF[DF['Feature Enabled'] == 1].groupby([’Feature Active'])[['Value1','Value2']].mean() 

有没有办法打印运行GROUPBY当前日志,因为我经历的每个文件,像...

DF[DF['Iteration'] == CURRENTLOG_ID and DF['Feature Enabled'] == 1].groupby([’Feature Active'])[['Value1','Value2']].mean() 

这将帮助我绘制到Excel中的每个日志为后我一起去处理一个日志目录。

感谢

回答

2

要使用多个条件,你需要使用逐位&,而不是and,你也需要用括号括由于运算符优先级的条件:

DF[(DF['Iteration'] == CURRENTLOG_ID) & (DF['Feature Enabled'] == 1)].groupby([’Feature Active'])[['Value1','Value2']].mean() 

应该工作

+0

谢谢EdChum ...再次:),我是在正确的道路上,但有一些括号不合适。 – MikG

+1

不用担心,记住你在比较数组的时候不能使用'和',''''和'not',你必须分别使用'&','''和'〜',并用括号括起来 – EdChum

+0

谢谢你,好建议。到达基本水平高原后,我正在慢慢攀登Python学习阶梯,然后我决定看看熊猫! – MikG

1

尝试使用masks

mask_A = DF['Feature Enabled'] == 1 
mask_B = DF['Iteration'] == CURRENTLOG_ID 

subset = DF[mask_A & mask_B].groupby(...).mean() 
+0

我认为你仍然需要将括号中的条件放在括号内()'()' – EdChum

+1

谢谢alec_djinn,我已经解决了你的解决方案,但最终还是采用了EdChums解决方案,因为它符合我原来的计划。但感谢突出显示面具这将有用。 – MikG