Création efficace de colonnes supplémentaires dans un pandas DataFrame à l'aide de .map ()

Je suis d'analyser un ensemble de données qui est de forme similaire à l'exemple suivant. J'ai deux différents types de données (abc de données et xyz de données):

   abc1  abc2  abc3  xyz1  xyz2  xyz3
0     1     2     2     2     1     2
1     2     1     1     2     1     1
2     2     2     1     2     2     2
3     1     2     1     1     1     1
4     1     1     2     1     2     1

Je veux créer une fonction qui ajoute une catégorisation de la colonne pour chaque abc colonne qui existe dans le dataframe. À l'aide de listes de noms de colonne et une catégorie de cartographie dictionnaire, j'ai pu obtenir mon résultat souhaité.

abc_columns = ['abc1', 'abc2', 'abc3']
xyz_columns = ['xyz1', 'xyz2', 'xyz3']
abc_category_columns = ['abc1_category', 'abc2_category', 'abc3_category']
categories = {1: 'Good', 2: 'Bad', 3: 'Ugly'}

for i in range(len(abc_category_columns)):
    df3[abc_category_columns[i]] = df3[abc_columns[i]].map(categories)

print df3

Le résultat final:

   abc1  abc2  abc3  xyz1  xyz2  xyz3 abc1_category abc2_category abc3_category
0     1     2     2     2     1     2          Good           Bad           Bad
1     2     1     1     2     1     1           Bad          Good          Good
2     2     2     1     2     2     2           Bad           Bad          Good
3     1     2     1     1     1     1          Good           Bad          Good
4     1     1     2     1     2     1          Good          Good           Bad

Tandis que le for boucle à l'extrémité fonctionne très bien, je me sens comme je devrais être à l'aide de Python lambda de la fonction, mais n'arrive pas à le comprendre.

Est-il un moyen plus efficace de la carte dans un nombre dynamique de abcles colonnes de type?

source d'informationauteur Daniel Romero