[PYTHON] Hinweis) Stapelkonvertierung bestimmter Symbole in einer Zeichenfolge mit einem Wörterbuch

Überblick

"Stapelkonvertierungsmethode für in Daten enthaltene Zeichen" https://qiita.com/wellwell3176/questions/1345ab14964d2a050b5a

Ich habe ein Programm erstellt, das auf den Antworten auf die obigen Fragen basiert. Ich habe es zum Teilen gepostet, weil es zu lang war, um es auf die Fragenseite zu stellen.

Spezifikation

Verwenden Sie für die Rohdaten in Tabelle 1 die Konvertierungstabelle in Tabelle 2, um die Symbole zu trennen, zu konvertieren und in einer neuen Spalte zu speichern. In diesen Daten ist die Umrechnungstabelle in Tabelle 2 klein, aber in den tatsächlichen Daten gibt es ungefähr 30 Arten von Symbolen und ungefähr 10 Arten von Spaltenbeschriftungen Es bestand der Wunsch, "die Konvertierungstabelle so weit wie möglich mit einer Excel-Datei zu kompilieren".

Tabelle 1 Rohdaten

No. Pferdename
1 Koshihikari ○ ○
2 Sasanishiki ◎
3 Yomogi Dango ✕ ②
4 Tanaka Katarou ①

Tabelle 2 Umrechnungstabelle

Persönliche Erwartungen Zeitungsprognose
Nr. 1
Nr. 2
Nummer 3
Favorit
Zähler
Großes Loch

Implementiertes Programm

Fertiges Produkt


import pandas as pd

#Leiten Sie das in Frage und Antwort dargestellte Allzweckprogramm um
def tagging(df, column, trdict): #Ursprünglicher DataFrame,Zur Klassifizierung verwendete Spalten,Klassifikationswörterbuch
    for key, d in trdict.items():
    #Verarbeiten Sie jeden ersten Schlüssel (persönliche Prognose, Zeitungsprognose) des Datenrahmens.
        df_ = df[column].str.extract(f'({"|".join(d.keys())})')
        for k, v in d.items():
            df_ = df_.replace(k, v)
          #2nd key(◎ ✕ etc.)Konvertieren Sie nach dem Extrahieren mit und Erstellen einer neuen Spalte den zweiten Schlüssel und Wert
            df[column] = df[column].str.replace(k, "")
        df[key] = df_.fillna("")
        #2. Schlüssel aus Quellenspalte entfernt
    return df

df = pd.DataFrame( #Erstellen Sie Beispieldaten. Eigentlich Excel lesen
    data=[{
        'No.': 1,
        'horse': 'Koshihikari ○ ○',
    }, {
        'No.': 2,
        'horse': 'Sasanishiki ◎',
    }, {
        'No.': 3,
        'horse': 'Yomogi Dango ✕ ②',
    }, {
        'No.': 4,
        'horse': 'Tanaka Katarou ①',
    }])

dict_raw = pd.read_excel("hogehoge.xlsx",index_col=0)
#hogehoge.xlsx entspricht den Excel-Daten in Tabelle 2
dict_process=dict_raw.to_dict(orient='dict')
#to_Konvertieren Sie mit dict in das Wörterbuchformat
list_key=list(dict_process.keys())
#Da es in der for-Anweisung verwendet wird, wird der Inhalt des Schlüssels aufgelistet (er kann nicht als Ziel der for-Anweisung ausgewählt werden, da er keine Reihenfolge hat, wenn er im Wörterbuch verbleibt).

dict_comp=dict() #update()Wird verwendet, wird das fertige Produkt zunächst als leeres Wörterbuch generiert.

#Löschen Sie den Schlüssel, der keinen Wert hat, aus dem Wörterbuch (in diesem Fall"Persönliche Erwartungen":"◎"Nan wird gespeichert und stört)
for i in list_key:
  output_dict = dict(filter(lambda item: item[1] is not np.nan, d3[i].items()))
  dict_comp.update({i:output_dict})

tagging(df,"horse",dict_comp)
<Ausgabeergebnis>
	No.Pferd persönliche Prognose Zeitungsprognose
0 1 Koshihikari Nr. 3 Opposition
1 2 Sasanishiki Favorit
2 3 Yomogi Dango Nr. 2 Großes Loch
3 4 Tanaka Katarou Nr. 1

Referenzlink

Referenzquelle für die Wörterbuchfilterung: https://tombomemo.com/python-dict-filter/

Recommended Posts

Hinweis) Stapelkonvertierung bestimmter Symbole in einer Zeichenfolge mit einem Wörterbuch
Geben Sie eine Zeichenfolge mit Zeilenumbrüchen in PyYAML aus
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
[Golang] Überprüfen Sie, ob eine bestimmte Zeichenfolge in der Zeichenfolge enthalten ist
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
String-Konvertierung einer Liste mit Zahlen
<Python> Ein Quiz zum Batch-Konvertieren von Dateinamen, die durch eine bestimmte Zeichenfolge als Teil des Dateinamens getrennt sind
Klonen Sie mit einem bestimmten Zweig / Tag in GitPython
Extrahieren Sie mit Pandas Zeilen, die eine bestimmte "Zeichenfolge" enthalten
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ruft den Variablennamen der Variablen als Zeichenfolge ab.
Speichern Sie Japanisch (Multibyte-Zeichenfolge) in sqlite3 von Python
[Python] So erweitern Sie Variablen in einer Zeichenfolge
#Eine Funktion, die den Zeichencode einer Zeichenfolge zurückgibt
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Ich möchte eine Zeichenkette mit Hiragana teilen
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Stoppen Sie eine Instanz mit einem bestimmten Tag in Boto3
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
[Python] Programmieren, um die Nummer von a in einer Zeichenfolge zu finden, die eine bestimmte Anzahl von Malen wiederholt.
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
[Hinweis] Ein Shell-Skript, das die CPU-Auslastung eines bestimmten Prozesses in einer while-Schleife überprüft.
Hinweis zum Standardverhalten von collate_fn in PyTorch
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
Erkennen Sie mit Python Objekte einer bestimmten Farbe und Größe
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Zusammenfassung des Zeichenkettenformats in Python3 Gibt an, ob mit dem alten oder dem neuen Modell gelebt werden soll
Die Geschichte des Erstellens eines Bots, der aktive Mitglieder in einem bestimmten Slack-Kanal mit Python anzeigt