我有这样的Pandas DataFrame:
data = pd.DataFrame({"car":["mazda", "mazda", "audi", "bmw", "audi"], "cost":[10000, 15000, 20000, 30000, 45000]})
以及如何打印显示3列的表格:
所以我需要这样的东西:
1. audi 20000 2
2. bmw 30000 1
3. audi 45000 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