Mettre en placePandas: agrégation conditionnelle moyenne et médiane
Je racler annonces de logements avec Scrapy et analyser les résultats avec pandas géants.
Je construis des trames de données, en les regroupant par emplacement et en les agrégeant sur plusieurs caractéristiques de logement (par exemple, location).
Problème
Je veux construire les mêmes dataframes, à savoir le regroupement sur l'emplacement et Agrégats de caractéristiques du logement, mais maintenant agrégeant conditionnelle.
C'est-à-dire, j'ai une caractéristique pour chaque annonce de logement nommée type
qui est soit 1
ou 2
. Je veux regrouper au-dessus de l'emplacement et agréger les caractéristiques du logement aussi conditionnellement sur type
étant 1
ou 2
.
code
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)
Ceci est mon code de travail, qui ne regroupe pas certaines conditions. Je pensais que je pourrais diviser mdf
en deux DataFrames - un pour chaque type
- et ensuite exécuter le code sur les deux images et fusionner les résultats dans une table. Cela semble un peu inefficace cependant.
De préférence, je veux le code pour faire quelque chose comme ceci:
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',
}
Comment dois-je procéder?
Je serai damné. Merci! Btw, à la fois 'badf.loc [1]' et 'badf.xs (1)' fonctionnent, semble-t-il. – LucSpan