Ich habe den Artikel vorgestellt. Im praktischen Gebrauch
Ich war ziemlich süchtig nach den folgenden Daten Ich werde es posten.
Ich bin sicher, es gibt einen klügeren Weg, Sobald der Zweck erreicht wurde.
Angenommen, Sie haben die folgenden zwei Daten. jeder Hauptschlüssel (erforderlich) Unterschlüssel (optional) Es gibt.
Die Transaktionsdaten sind im Excel-Format und die Abkürzung für den Unterschlüssel lautet "". Es ist ein bestimmtes Leerzeichen vorhanden. Die Stammdaten liegen im CSV-Format vor, und die Unterschlüsselauslassungen werden ohne Leerzeichen gespeichert.
Wenn Sie es als RDBMS speichern und mit Trimmen verbinden, ist es ein Schuss. Realisierung nur mit Python
Python 3.8.2 Visual Studio Code 1.45.0
Wie unten gezeigt, wird Excel zur Bestätigung verbunden und schließlich ausgegeben
subkey_join.py
#Verbinden Sie den Hauptschlüssel (erforderlich) und den Unterschlüssel (optional).
import pandas as pd
import re
def main():
#Körperbearbeitung
#Daten lesen
new_acc_master = pd.read_csv(".\\subkey_join\\Meister.csv",encoding="cp932", dtype=str)
value_trn = pd.read_excel(".\\subkey_join\\Transaktion.xlsx", dtype=str)
#Löschen ohne Unterwert
value_trn['Subcode'] = value_trn['Subcode'].str.strip()
new_acc_master['Subcode'] = new_acc_master['Subcode'].str.strip()
#Der nicht vollständige Wert von Tran wurde durch keinen Wert ersetzt. Daten mit einer leeren Quelle waren in Ordnung.
value_trn.Subcode[value_trn.Subcode == ""] = "Kein Wert"
print(type(value_trn))
print(value_trn.dtypes)
#☆☆ NG Ich habe versucht, dasselbe auf der Masterseite zu tun, aber es wird durch die folgende Logik nicht geändert
#new_acc_masternew_acc_master.sub[new_acc_master.sub == ""] = "Kein Wert"
#Master-Subcode ohne Unterwerte
#new_acc_master = new_acc_master.replace('^$',{'Subcode':'Kein Wert'},regex=True)
print(new_acc_master['Subcode'].dtype)
#Geben Sie den Python-Zeichentyp astype an
#Der Typ auf Pandas ändert sich nicht mit dem Objekt, aber wenn es keinen Wert gibt,"nan"Zu ändern
new_acc_master['Subcode'] = new_acc_master['Subcode'].astype(str)
print(new_acc_master['Subcode'].dtype)
##☆☆ Das ist in Ordnung. Ich denke, es gibt einen intelligenteren Weg. ..
new_acc_master.Subcode[new_acc_master.Subcode == "nan"] = "Kein Wert"
print(type(new_acc_master))
print(new_acc_master.dtypes)
#Linke Verbindung mit Haupt- und Unterschlüssel.
jpin_pd = pd.merge(value_trn, new_acc_master, how="left", left_on=['Haupt code','Subcode'], right_on=['Haupt code','Subcode'],suffixes=('_trn','_new'))
#Excel-Ausgabe
jpin_pd.to_excel(".\\subkey_join\\view_data.xlsx")
if __name__ == '__main__': main()
Recommended Posts