使用熊猫过滤和计数组

时间:2019-12-26 21:28:53

标签: python pandas

我有这样的Pandas DataFrame:

data = pd.DataFrame({"car":["mazda", "mazda", "audi", "bmw", "audi"], "cost":[10000, 15000, 20000, 30000, 45000]})

以及如何打印显示3列的表格:

  1. 车名
  2. 汽车成本,但我只想查看价格在20000至45000之间的汽车
  3. 给定品牌的汽车数量

所以我需要这样的东西:

1.  audi   20000   2
2.  bmw    30000   1
3.  audi   45000   2

2 个答案:

答案 0 :(得分:2)

对于问题1和2:

df = data.query('cost>=20000 & cost<=45000')
df
# returns:
    car   cost
2  audi  20000
3   bmw  30000
4  audi  45000

问题3:

df.merge(data.groupby('car').count().rename(
    columns={'cost': 'count'}), left_on='car', right_index=True)
# returns:
    car   cost  count
2  audi  20000      2
4  audi  45000      2
3   bmw  30000      1

答案 1 :(得分:1)

我们首先可以使用以下方法过滤汽车:

data = data[data['cost'].between(20000, 45000)]

我们可以在此处使用 .transform(..) 来计算每种'count'类型的汽车数量(car):

data['count'] = data.groupby('car').transform('count')

然后产生:

>>> data
     car   cost
0  mazda  10000
1  mazda  15000
2   audi  20000
3    bmw  30000
4   audi  45000
>>> data = data[data['cost'].between(20000, 45000)]
>>> data['count'] = data.groupby('car').transform('count')
>>> data
    car   cost  count
2  audi  20000      2
3   bmw  30000      1
4  audi  45000      2
相关问题