[PYTHON] Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame

Si vous souhaitez ajouter une colonne n'importe où dans le Pandas DataFrame, utilisez pandas.DataFrame.insert Cela peut être réalisé en l'utilisant, mais il y a quelques plaintes.

--Non immuable (DataFrame est directement réécrit / méthode destructive / pas d'option en place)

J'ai écrit une fonction pratique pour résoudre ces problèmes.

la mise en oeuvre

from typing import Union, Optional
import pandas as pd


def insert_columns(
        df: pd.DataFrame,
        data: Union[pd.Series, pd.DataFrame],
        *,
        before: Optional[str] = None,
        after: Optional[str] = None,
        allow_duplicates: bool = False,
        inplace: bool = False,
    ) -> pd.DataFrame:

    if not inplace:
        df = df.copy()

    if not (after is None) ^ (before is None):
        raise ValueError('Specify only "before" or "after"')

    if before:
        loc = df.columns.get_loc(before)
    else:
        loc = df.columns.get_loc(after) + 1

    if type(data) is pd.Series:
        df.insert(loc, data.name, data, allow_duplicates)
    elif type(data) is pd.DataFrame:
        for column in data.columns[::-1]:
            df.insert(loc, column, data[column], allow_duplicates)

    return df

--Spécifiez le nom de la colonne pour «avant» ou «après» --Par défaut, le DataFrame d'entrée n'est pas directement réécrit. --Récrire directement en spécifiant ʻinplace = True`

Comment utiliser

Utilisez l'ensemble de données iris de sklearn comme exemple de données.

from sklearn import datasets

iris = datasets.load_iris()

df = pd.DataFrame(iris.data, columns=iris.feature_names)
target = pd.Series(iris.target_names[iris.target], name='target')
df.head()

image.png

target.head()

image.png

Essayez d'ajouter une cible après «largeur sépale (cm)» dans df.

insert_columns(df, target, after='sepal width (cm)')

image.png

Dans cet exemple, Series est ajouté, mais DataFrame peut également être spécifié.

Recommended Posts

Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Fonction pour renvoyer plusieurs colonnes à des colonnes uniques dans DataFrame
Combinez des listes dans un DataFrame avec des pandas
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Comment réattribuer un index dans pandas dataframe
[Pandas_flavor] Ajouter une méthode de Pandas DataFrame
[Python] Ajouter le nombre total de lignes à Pandas DataFrame
Comment trouver une colonne d'un type spécifique (str, float, etc.) à partir d'une colonne dans un DataFrame
Pour ajouter un module à python que vous mettez dans Julialang
Ajouter des totaux aux lignes et aux colonnes avec des pandas
Comment se moquer d'une fonction publique dans Pytest
Vérifiez si la colonne attendue existe dans Pandas DataFrame
Convertir des chaînes numériques séparées par des virgules en nombres dans Pandas DataFrame
Comment afficher DataFrame sous forme de tableau dans Markdown
Covector pour penser en fonction
Créer une fonction en Python
Ajouter un dictionnaire à MeCab
Comment appeler une fonction
Comment importer des fichiers où vous le souhaitez en Python
Ingéniosité pour gérer les données avec Pandas de manière à économiser la mémoire
Pour renvoyer char * dans une fonction de rappel à l'aide de ctypes en Python
Créons une fonction pour maintenir Button dans Tkinter
Exporter la trame de données pandas vers Excel
python / pandas / dataframe / Comment obtenir la ligne / colonne / index / colonne la plus simple
J'ai écrit une fonction pour charger le script d'extension Git en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique
Je veux faire de la deuxième ligne le nom de la colonne dans pandas
Créez une fonction pour obtenir le contenu de la base de données dans Go
Fonction pour convertir des colonnes Excel en nombres
Pour ajouter un module C à MicroPython ...
Comment écrire sobrement avec des pandas
Créez un Dataframe pandas à partir d'une chaîne.
Comment créer une fonction récursive
Pandas Extraire les éléments par nom de colonne x numéro de ligne
mettre à jour le dataframe
Remplacez les noms / valeurs des colonnes par pandas dataframe
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
[Python] Trier la table par sort_values (pandas DataFrame)
Trier par pandas
Vérifiez si la colonne attendue existe dans Pandas DataFrame
Application Python: Pandas # 3: Dataframe
Fonction pratique pour ajouter des colonnes n'importe où dans Pandas DataFrame
[Python / Tkinter] Rechercher Pandas DataFrame → Créer un formulaire de recherche simple à afficher
Ajout d'une fonction pour enregistrer les décalages souhaités dans la table des décalages Django
Comment trier en spécifiant une colonne dans le tableau Python Numpy.
Ajoutez une carte GPIO à votre ordinateur. (1)
Comment diviser et enregistrer un DataFrame
Je veux imprimer dans la notation d'inclusion
Précautions lors du décapage d'une fonction en python
Comment ajouter un package avec PyCharm
Un simple script IDAPython pour nommer une fonction
Comment obtenir stacktrace en python
Dans Jupyter, ajoutez IPerl au noyau.
[Pandas] Développer les chaînes de caractères en DataFrame
[Python] pandas à bien comprendre en 10 minutes
Lancer une application Flask dans Python Anywhere
[V11 ~] Un mémorandum à mettre dans Misskey
Remplacez les noms / valeurs des colonnes par pandas dataframe
Créer un bloc de données à partir d'Excel à l'aide de pandas
Comment lire des fichiers CSV avec Pandas
Ajouter une série à la colonne dans les pandas python
Téléchargez Pandas DataFrame sous forme de fichier CSV
Ajouter un environnement virtuel Python à VSCode