Pandas:通过过滤变量级别并将其分组返回计数的子集?

时间:2015-06-28 17:48:05

标签: python pandas

我在这里看不到大熊猫语法中的树木。

如何对仅对一个变量的一个级别进行过滤的现有数据框进行子集化,并将其与另一个变量分组,并返回已过滤变量的计数。据推测,这可以在一次操作中完成,而无需创建2个对象。

以下是基于mtcars数据集的可重现示例。我修改了'cyl'和'am'变量来复制我数据中的级别。

                    mpg   cyl  disp  hp drat    wt  qsec vs  am gear 
Mazda RX4           21.0  six 160.0 110 3.90 2.620 16.46  0  yes   4  
Mazda RX4 Wag       21.0  two 160.0 110 3.90 2.875 17.02  0  yes   4  
Datsun 710          22.8  six 108.0  93 3.85 2.320 18.61  1  no    4 
Hornet 4 Drive      21.4  two 258.0 110 3.08 3.215 19.44  1  yes   3 
Hornet Sportabout   18.7  six 360.0 175 3.15 3.440 17.02  0  yes   3 
Valiant             18.1  two 225.0 105 2.76 3.460 20.22  1  yes   3 
Duster 360          14.3  two 360.0 245 3.21 3.570 15.84  0  no    3 

在这里,我只想过滤“am”列中“是”的汽车,并将它们按'cyl'级别进行分组。

子集数据看起来应该像这样,需要是一个数据帧:

cyl   count_column 
six   2
two   3

1 个答案:

答案 0 :(得分:2)

df[df.am=="yes"].cyl.value_counts()

为此你不需要将本身分组,因为你想要的只是计数。 df[df.am=="yes"]为您提供了"是"在am列中。然后,您可以在该子集的value_counts列上使用cyl

结果是一个系列。如果您想要一个DataFrame,请创建一个:

pandas.DataFrame({'count_column': df[df.am=="yes"].cyl.value_counts()})