熊猫:有条件的聚集平均值和中位数



设置

我正在用砂纸刮擦住房广告,并用熊猫分析结果。

i构建数据框,分组位置并汇总了几个住房特征(例如租金(。


问题

我想构建相同的数据范围,即分组位置并汇总住房特征,但现在也有条件地汇总。

也就是说,我有一个名为type的外壳广告的特征,即12。我想对位置进行分组,并在type(12(上有条件地汇总住房特征。


代码

group = ['borough','click district name for housing ads','district']
mdf['# for rent'] = 1 
aggregator = {
        'median rent pw':'median',
        'rent pw':'mean',
        '# of roommates':'mean',
        '# for rent':'sum',
        }
badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)    

这是我的工作代码,它不会有条件地汇总。

我以为我可以在两个数据范围内将mdf分开 - 每个type - 随后在两个帧上运行代码,然后将结果合并到一个表中。不过,这似乎有点低效。

最好是,我希望代码做类似的事情:

    aggregator = {
        'median rent pw type 1 ':'median, conditionally on type = 1',
        'median rent pw type 2 ':'median, conditionally on type = 2',
        'median rent pw':'median',
        'rent pw type 1':'mean, conditionally on type = 1',
        'rent pw type 2':'mean, conditionally on type = 2',
        'rent pw':'mean',
        '# of roommates':'mean',
        '# for rent':'sum',
        }

我怎么去?

如果我没记错的话,我认为您只能在groupby

中包含type
group = ['type', 'borough','click district name for housing ads','district']
mdf['# for rent'] = 1 
aggregator = {
        'median rent pw':'median',
        'rent pw':'mean',
        '# of roommates':'mean',
        '# for rent':'sum',
        }
badf = mdf.groupby(group)['median rent pw','rent pw','# of roommates'].agg(aggregator)    

那么您应该能够在type == 1

获得
badf.loc[1]

badf.xs(1)

相关内容

最新更新