2017-10-19 20 views
0

J'ai écrit une méthode qui extrait une trame de données rawDatabase, une liste de validations 'validationLists' et un nom de champ ou de colonne pour appliquer les validations dans la base de données.Interrogation d'une colonne dans un bloc de données en utilisant une variable

Le code ressemble à:

rawDatabase = GetStandardisedField(rawDatabase,validationLists,"Status") 


def GetStandardisedField(rawDatabase,validationLists,field): 
    print('Standardising ', field,' ...') 

    my_list = validationLists[field] 

    l1=[] 
    print(rawDatabase.head()) 
    for x in rawDatabase.field: 
     print('here') 
     choice = process.extractOne(x, my_list)[0] 
     l1.append(choice) 

    rawDatabase['choice']=l1 
    rawDatabase[field] = rawDatabase['choice'] 
    del rawDatabase['choice'] 

    return rawDatabase 

Dans une version précédente du code j'ai utilisé le nom du champ réel, par exemple:

for x in rawDatabase.Status: 

Ceci fonctionnait bien, mais pour faire mon code réutilisable et plus simple que je récrire comme:

for x in rawDatabase.field: 

Le code cesse de fonctionner 'ici et je me demande si Python faire es ne vous permettent pas d'utiliser une variable pour sélectionner une colonne dans une trame de données

Toute aide serait grandement appréciée.

Merci

Répondre

0

DataFrame['column_name'] - est une syntaxe préférée d'accès à la colonne de dataframe, par rapport à DataFrame.column_name car il vous permet de:

  • variables d'utilisation. Exemple: col='Col1'; df[col]
  • ont des noms de colonnes que les numéros
  • ont des noms de colonnes contenant des espaces/onglets
  • ont des noms colonne qui assombrissent les noms des méthodes Numpy/Pandas - comme: count, 'moyenne', max, etc. NOTE: Don n'utilisez pas de tels noms - c'est un mauvais style