2017-09-27 2 views
0

C'est probablement très simple mais je ne suis pas trop clair.Comment créer des tuples en ligne à partir d'une plage ou d'une liste de colonnes?

Disons que j'ai une trame de données et une liste de références de colonnes. Mon but est de faire une liste de tuples qui donnent les valeurs de ce numéro de ligne pour seulement les colonnes contenues dans ma liste.

raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
    'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'], 
    'sex': ['male', 'female', 'male', 'female', 'female'], 
    'dog': ['Burt','Kane','Billy','Bob','Thorton'], 
    'cat': ['Evil','PurrEvil','Rorry','Meowth','Killer'], 
    'fish': ['Johhny','Nemo','Dorry','Jacob','Pinky']} 
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'sex']) 

colref = ['dog','cat','fish'] 

Je veux faire une liste de tuples comme [[ 'Burt', 'mal', 'Johhny'], [ 'Kane', 'PurrEvil', 'Nemo'], ...]

mais je veux le faire sans noms de colonnes ou chiffres en dur. L'ensemble de données réel sur lequel j'effectue cette opération est beaucoup plus grand et de taille variable, mais ma liste colref inclura toujours toutes les colonnes que je veux dans ma liste de tuple. Est-ce que quelqu'un a des conseils pour moi?

Répondre

0

Je pense que je l'ai pensé à elle .. lol

tuples = [tuple(x) for x in df[colref].values] 

S'il y a une meilleure solution mais s'il vous plaît laissez-moi savoir. Je m'amuse à regarder les solutions des autres aux problèmes que je rencontre en tant que noob.