L'extraction spécifique colonnes sélectionnées à nouveau DataFrame comme une copie
J'ai une pandas DataFrame avec 4 colonnes et que je veux créer une nouveau DataFrame que seulement a trois colonnes. Cette question est similaire à: L'extraction des colonnes spécifiques à partir d'un bloc de données mais pour les pandas ne pas R. Le code suivant ne fonctionne pas, déclenche une erreur, et ce n'est certainement pas le pandasnic façon 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
Quel est le pandasnic façon de le faire?
Vous devez vous connecter pour publier un commentaire.
Il y a un moyen de le faire et en fait elle ressemble à la R
Ici, vous êtes juste à sélectionner les colonnes que vous voulez de l'original de la trame de données et la création d'une variable pour ceux. Si vous souhaitez modifier la nouvelle dataframe, vous voudrez probablement utiliser
.copy()
pour éviter unSettingWithCopyWarning
.Une autre méthode consiste à utiliser
filter
qui va créer une copie par défaut:Enfin, en fonction du nombre de colonnes dans votre original dataframe, il pourrait être plus succinct de l'exprimer à l'aide d'un
drop
(cela permettra également de créer une copie par défaut):old[['A']].copy()
, les doubles crochets sont nécessaires pour créer un nouveau bloc de données. Notez queold['A'].copy()
ne fera que créer une Série.Un autre moyen plus simple semble être :
où l'ancien.column_name vous donnera une série.
Faites une liste de toutes les colonnes de la série que vous souhaitez conserver et de passs pour le DataFrame constructeur. Nous avons besoin de faire une transposition pour ajuster la forme.
Générique forme fonctionnelle
Spécifiques pour votre problème ci-dessus
La façon la plus simple est
.
Aussi loin que je peux dire, vous n'avez pas nécessairement besoin de spécifier l'axe lors de l'utilisation de la fonction de filtre.
renvoie la même dataframe comme