web-dev-qa-db-fra.com

pandas groupby drop colonnes

Je fais un groupe simple par opération, en essayant de comparer les moyennes de groupe. Comme vous pouvez le voir ci-dessous, j'ai sélectionné des colonnes spécifiques dans un cadre de données plus grand, dont toutes les valeurs manquantes ont été supprimées.

selected columns and df head

Mais quand je fais un regroupement, je perds quelques colonnes:

group-by logic and resulting df

Je n'ai jamais rencontré cela avec des pandas, et je ne trouve rien d'autre sur le débordement de pile qui soit tout à fait similaire. Quelqu'un a-t-il une idée?

15
user3334415

Je pense que c'est Automatic exclusion of 'nuisance' columns, ce qui décrit ici .

Échantillon:

df = pd.DataFrame({'C': {0: -0.91985400000000006, 1: -0.042379, 2: 1.2476419999999999, 3: -0.00992, 4: 0.290213, 5: 0.49576700000000001, 6: 0.36294899999999997, 7: 1.548106}, 'A': {0: 'foo', 1: 'bar', 2: 'foo', 3: 'bar', 4: 'foo', 5: 'bar', 6: 'foo', 7: 'foo'}, 'B': {0: 'one', 1: 'one', 2: 'two', 3: 'three', 4: 'two', 5: 'two', 6: 'one', 7: 'three'}, 'D': {0: -1.131345, 1: -0.089328999999999992, 2: 0.33786300000000002, 3: -0.94586700000000001, 4: -0.93213199999999996, 5: 1.9560299999999999, 6: 0.017587000000000002, 7: -0.016691999999999999}})
print (df)
     A      B         C         D
0  foo    one -0.919854 -1.131345
1  bar    one -0.042379 -0.089329
2  foo    two  1.247642  0.337863
3  bar  three -0.009920 -0.945867
4  foo    two  0.290213 -0.932132
5  bar    two  0.495767  1.956030
6  foo    one  0.362949  0.017587
7  foo  three  1.548106 -0.016692

print( df.groupby('A').mean())
            C         D
A                      
bar  0.147823  0.306945
foo  0.505811 -0.344944

Je pense que vous pouvez vérifier DataFrame.dtypes .

21
jezrael