"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.
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 |
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
Referenzquelle für die Wörterbuchfilterung: https://tombomemo.com/python-dict-filter/