我在这里看不到大熊猫语法中的树木。
如何对仅对一个变量的一个级别进行过滤的现有数据框进行子集化,并将其与另一个变量分组,并返回已过滤变量的计数。据推测,这可以在一次操作中完成,而无需创建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
答案 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()})