我正在使用BS4抓住住房广告并使用Pandas分析数据。
以下命令
madrid_rooms_district=df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2','deposit'].agg(['mean', 'size'])
产生一个表格,每行一个区域,每个区域的'rent','size house, m2', 'price per m2','deposit'
区域。这就是我需要的。
我还需要一个列,显示每个区域的广告数量,因此'size'
中会显示.agg()
。但是,该命令的当前设置为我提供了显示广告数量的四个列,['rent','size house, m2', 'price per m2','deposit']
中每个项目的一列。
如何将“计数”列的数量从四个减少到一个?
E.g。我有,
district | rent; mean | rent; size | size house, m2; mean | size house, m2; mean | ...
-----------------------------------------------------------------------------------
A | 300 | 2 | 100 | 2 | ...
B | 400 | 6 | 200 | 6 | ...
C | 500 | 3 | 120 | 3 | ...
我需要,
district | rent; mean | size house, m2; mean | price per m2; mean | deposit; mean | count
---------------------------------------------------------------------------------------
A | 300 | 100 | 15 | 1 | 2
B | 400 | 200 | 14 | 2 | 6
C | 500 | 120 | 12 | 3 | 3
我一直试图通过创建两个DataFrame来解决这个问题。一个用于手段,一个用于计数,但无法将它们合并到一个DataFrame中。试过系列,尝试加入,尝试追加,试过......
答案 0 :(得分:1)
一个简单的选项是在原始数据集中添加一列1(让我们称之为“count”),然后对此列求和:
df['count'] = 1
aggregator = {'rent' : 'mean',
'size house, m2' : 'mean',
'price per m2': 'mean',
'deposit' : 'mean',
'count': 'sum'}
madrid_rooms_district = df.groupby('district', as_index=False)['rent','size house, m2', 'price per m2', 'deposit'].agg(aggregator)