pandas: extraction de certaines colonnes d'une DataFrame vers une nouvelle DataFrame [dupliquer]

cette question a déjà une réponse ici:

  • Sélection de plusieurs colonnes dans une pandas dataframe 11 réponses

j'ai une DataFrame de pandas avec 4 colonnes et je veux créer un nouveau DataFrame que seulement a trois de la colonne. Cette question est similaire à: extraire des colonnes spécifiques d'une base de données mais pour pandas pas R. le code suivant Ne fonctionne pas, soulève une erreur, et n'est certainement pas la façon 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 façon pandasnique de le faire?

64
demandé sur Brad Solomon 2016-01-08 20:34:45

1 réponses

Il y a un moyen de le faire et en fait elle ressemble à R

new = old[['A', 'C', 'D']].copy()

ici, vous sélectionnez simplement les colonnes que vous voulez à partir de la base de données originale et la création d'une variable pour ceux. Si vous souhaitez modifier la nouvelle dataframe, vous voudrez probablement utiliser .copy() pour éviter une SettingWithCopyWarning .

une autre méthode consiste à utiliser filter qui créera une copie par défaut:

new = old.filter(['A','B','D'], axis=1)

enfin, selon le nombre de colonnes dans votre datagramme original, il pourrait être plus succinct d'exprimer cela en utilisant un drop (cela créera aussi une copie par défaut):

new = old.drop('B', axis=1)
118
répondu johnchase 2016-12-21 23:39:53