Pythonic/moyen efficace de suppression des espaces de tous les Pandas trame de Données de la cellule qui a un stringlike objet en elle

Je suis en train de lire un fichier CSV dans un DataFrame. J'ai besoin de dépouiller les espaces de toutes les stringlike cellules, laissant les autres cellules inchangé en Python 2.7.

Ici est ce que je fais:

def remove_whitespace( x ):
    if isinstance( x, basestring ):
        return x.strip()
    else:
        return x

my_data = my_data.applymap( remove_whitespace )

Est-il mieux ou plus idiomatique Pandas façon de le faire?

Est-il un moyen plus efficace (peut-être en faisant des choses colonne sage)?

J'ai essayé de chercher une réponse définitive, mais la plupart des questions sur ce sujet semble être la façon de suppression des espaces dans la colonne des noms eux-mêmes, ou supposer que les cellules sont toutes les chaînes.

Qu'arriverait-il si vous étiez à faire x.strip() sur un élément qui n'est pas une instance d'un basestring? Si il ne sont pas les inconvénients peut-être que vous pourriez supprimer le vérifier et de le remplacer par un bloc try et except. Qui pourrait accélérer les choses.
Êtes-vous à l'aide de pandas.read_csv (pandas.pydata.org/pandas-docs/version/0.17.0/generated/...)? Avez-vous essayé skipinitialspace=True?
Je pourrais avoir des espaces avant et après les données que j'ai soucier de la cellule, donc je pense que skipinitialspace fixe seulement la moitié du problème.
essayez d'appeler .strip() sur un non-stringlike objet (ou d'une chose qui n'a pas une bande de méthode, comme un type de données numérique) génère une exception. Vous avez raison, la manipulation de l'exception pourrait être plus rapide que de faire le check - selon la base de données et la fréquence des exceptions.
J'avais peur que ce pourrait être le cas.

OriginalL'auteur deadcode | 2015-11-18