Avant Rejoignez csv normalisé par les pandas Python et traitez-le pour une confirmation facile
J'ai présenté l'article. En cas d'utilisation pratique
J'étais assez accro aux données suivantes Je vais le poster.
Je suis sûr qu'il existe un moyen plus intelligent, Une fois le but atteint.
Supposons que vous ayez les deux données suivantes. chaque Clé principale (obligatoire) Sous-clé (facultatif) Il y a.
Les données de transaction sont au format Excel et l'abréviation de la sous-clé est "" Il y a un certain espace. Les données de base sont au format CSV et les omissions de sous-clés sont stockées sans espaces "".
Si vous le stockez en tant que SGBDR et que vous vous joignez à Trim, ce sera un coup. Réalisation avec Python seul
Python 3.8.2 Visual Studio Code 1.45.0
Comme indiqué ci-dessous, il rejoint et génère enfin Excel pour confirmation
subkey_join.py
#Joignez la clé principale (obligatoire) et la sous-clé (facultative).
import pandas as pd
import re
def main():
#Traitement du corps
#Lire les données
new_acc_master = pd.read_csv(".\\subkey_join\\Maître.csv",encoding="cp932", dtype=str)
value_trn = pd.read_excel(".\\subkey_join\\transaction.xlsx", dtype=str)
#Supprimer sans sous-valeur
value_trn['Sous-code'] = value_trn['Sous-code'].str.strip()
new_acc_master['Sous-code'] = new_acc_master['Sous-code'].str.strip()
#Remplacement de la valeur non sous-complète de Tran par aucune valeur. Les données avec une source vide étaient correctes.
value_trn.Sous-code[value_trn.Sous-code == ""] = "Aucune valeur"
print(type(value_trn))
print(value_trn.dtypes)
#☆☆ NG J'ai essayé de faire la même chose du côté maître, mais cela n'est pas changé par la logique suivante
#new_acc_masternew_acc_master.sous[new_acc_master.sous == ""] = "Aucune valeur"
#Sous-code maître sans sous-valeurs
#new_acc_master = new_acc_master.replace('^$',{'Sous-code':'Aucune valeur'},regex=True)
print(new_acc_master['Sous-code'].dtype)
#Spécifiez le type de caractère Python, astype
#Le type sur les pandas ne change pas avec l'objet, mais là où il n'y a pas de valeur,"nan"Pour changer en
new_acc_master['Sous-code'] = new_acc_master['Sous-code'].astype(str)
print(new_acc_master['Sous-code'].dtype)
##☆☆ C'est OK, je pense qu'il existe un moyen plus intelligent. ..
new_acc_master.Sous-code[new_acc_master.Sous-code == "nan"] = "Aucune valeur"
print(type(new_acc_master))
print(new_acc_master.dtypes)
#Joindre gauche avec la clé principale et la sous-clé.
jpin_pd = pd.merge(value_trn, new_acc_master, how="left", left_on=['Code principal','Sous-code'], right_on=['Code principal','Sous-code'],suffixes=('_trn','_new'))
#Sortie Excel
jpin_pd.to_excel(".\\subkey_join\\view_data.xlsx")
if __name__ == '__main__': main()
Recommended Posts