it-swarm.com.de

Einige Werte in einer Pandas-Dataframe-Spalte durch einen anderen Wert ersetzen

Ich habe einen Pandas-Datenrahmen df wie unten gezeigt:

BrandName Specialty
A          H
B          I
ABC        J
D          K
AB         L

Ich möchte 'ABC' und 'AB' in der Spalte BrandName durch A .. ersetzen. Kann mir jemand helfen?

42
Pulkit Jha

Der einfachste Weg ist die Verwendung der Methode replace für die Spalte. Die Argumente sind eine Liste der Dinge, die Sie ersetzen möchten (hier ['ABC', 'AB']) und mit denen Sie sie ersetzen möchten (in diesem Fall die Zeichenfolge 'A'):

>>> df['BrandName'].replace(['ABC', 'AB'], 'A')
0    A
1    B
2    A
3    D
4    A

Dadurch wird eine neue Reihe von Werten erstellt, sodass Sie diese neue Spalte dem richtigen Spaltennamen zuordnen müssen:

df['BrandName'] = df['BrandName'].replace(['ABC', 'AB'], 'A')
71
Alex Riley

Ersetzen

DataFrame-Objekt verfügt über eine leistungsstarke und flexible replace -Methode:

DataFrame.replace(
        to_replace=None,
        value=None,
        inplace=False,
        limit=None,
        regex=False, 
        method='pad',
        axis=None)

Wenn Sie Änderungen vornehmen möchten, verwenden Sie das boolesche Argument inplace für die Methode replace:

An Ort und Stelle

inplace: boolean, Standard False Wenn True vorhanden ist. Hinweis: Dadurch werden alle anderen Ansichten dieses Objekts geändert (z. B. eine Spalte eines DataFrame). Gibt den Anrufer zurück, wenn dies True ist.

Ausschnitt

df['BrandName'].replace(
    to_replace=['ABC', 'AB'],
    value='A',
    inplace=True
)
22
I159

loc-Funktion kann verwendet werden, um mehrere Werte zu ersetzen, Dokumentation dafür: loc

df.loc[df['BrandName'].isin([ABC', 'AB'])]='A'
3
Saurabh

Diese Lösung ändert den vorhandenen Datenrahmen selbst:

mydf = pd.DataFrame({"BrandName":["A", "B", "ABC", "D", "AB"], "Speciality":["H", "I", "J", "K", "L"]})
mydf["BrandName"].replace(["ABC", "AB"], "A", inplace=True)
3
Namrata Tolani

Erstellt den Datenrahmen:

import pandas as pd
dk=pd.DataFrame({"BrandName":['A','B','ABC','D','AB'],"Specialty":['H','I','J','K','L']})

Verwenden Sie jetzt die Funktion DataFrame.replace():

dk.BrandName.replace(to_replace=['ABC','AB'],value='A')
1
shubham ranjan

Ich wollte nur zeigen, dass keine Leistung zwischen den zwei Hauptmethoden besteht:

df = pd.DataFrame(np.random.randint(0,10,size=(100, 4)), columns=list('ABCD'))

def loc():
    df1.loc[df1["A"] == 2] = 5
%timeit loc
19.9 ns ± 0.0873 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)


def replace():
    df2['A'].replace(
        to_replace=2,
        value=5,
        inplace=True
    )
%timeit replace
19.6 ns ± 0.509 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
0
Claudiu Creanga