J'ai un dataframe de pandas géants avec 4 colonnes et je veux créer une nouvelle trame de données qui ne possède trois des colonnes. Cette question est similaire à: Extraire des colonnes spécifiques d'une trame de données mais pas pour les pandas R. Le code suivant ne fonctionne pas, génère une erreur et n'est certainement pas la manière pandasnique de le faire.
import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator
Quelle est la manière pandasnique de le faire?
la source
old[['A']].copy()
, les doubles crochets sont nécessaires pour créer un nouveau bloc de données. Notez queold['A'].copy()
cela ne créera qu'une série.Le moyen le plus simple est
.
la source
Un autre moyen plus simple semble être:
où
old.column_name
vous donnera une série. Faites une liste de toutes les séries de colonnes que vous souhaitez conserver et transmettez-la au constructeur DataFrame. Nous devons faire une transposition pour ajuster la forme.la source
Forme fonctionnelle générique
Spécifique à votre problème ci-dessus
la source
Si vous souhaitez avoir une nouvelle trame de données, alors:
la source
Pour autant que je sache, vous n'avez pas nécessairement besoin de spécifier l'axe lors de l'utilisation de la fonction de filtre.
renvoie le même dataframe que
la source
colonnes par index:
la source