J'essaie de fusionner deux fichiers CSV avec une colonne commune et de l'écrire dans un nouveau fichier. Par example Product.Csv Tableau aura des colonnes
with open('product.csv', 'r') as f:
r = csv.reader(f)
dict1 = {row[0]: row[1:] for row in r}
with open('subproduct.csv', 'r') as f:
r = csv.reader(f)
dict2 = {row[0]: row[1:] for row in r}
6 Réponses :
S'il vous plaît essayez ceci: p>
importer des pandas comme pd p>
sortie = pd.mérige (produit, sub_product, comment = 'externe', gauche_on = 'product_id', droite_on = 'product_id') p>
Il s'agit de deux cadres de données (produit et sub_product) par la colonne Product_ID qui est courante pour les deux. La jointure externe renvoie tous les enregistrements correspondant à la clé des deux cadres de données. Même comment = 'intérieure' aurait également travaillé dans ce cas p>
s'il vous plaît expliquer un peu comme ce que c'est quoi et comment cela aidera
Il rejoint deux cadres de données (produit et sub_product) par colonne Product_ID qui est courante pour les deux. La jointure externe renvoie tous les enregistrements correspondant à la clé des deux cadres de données. Même comment = 'Inner' aurait également travaillé dans ce cas.
S'il vous plaît ajouter ça à vous de répondre
Utiliser Pandas:
import pandas as pd
products_df = pd.read_csv('product.csv')
subproducts_df = pd.read_csv('subproduct.csv')
sales_df = pd.merge(products_df, subproducts_df, on=0)
Vous pouvez lire les données directement dans des fichiers de données Pandas, puis fusionner les deux dataframes: Cela fonctionne parfaitement pour votre exemple. Selon la façon dont vos données réelles ressemblent, vous devrez peut-être modifier certains des arguments supplémentaires de PD.MERGE. P> EDIT: Ajout de la partie ECRIRE à CSV P> P>
étape 1 forts>: premier PIP Installez des pandas si vous n'avez pas fait cela P> df1=pd.read_csv('product.csv')
df2=pd.read_csv('subproduct.csv')
Vous pouvez travailler un script avec python pur.
Il a une puissante libelle appelée CSV , qui devrait faire le tour C'est l'idée principale, vous pouvez désormais enregistrer la sortie en CSV et ajouter des exceptions de manipulation d'en-tête. P> p>
Vous pouvez seulement parcourir une fois qu'un lecteur de CSV. Vous devriez au moins utiliser: Subproduct_Reader = Liste (CSV.Reader (CSV.Reader (csv_subproduct, Delimiter = ','))) Code> Pour enregistrer le résultat dans une liste et le traiter une fois par ligne à partir du premier fichier.
Je ne navigue qu'une seule fois, à l'intérieur des boucles.
pour P in ProDuto_Reader: Pour SP dans SubProduct_Reader: Code> Vous essayez de parcourir sous-production code> pour chaque ligne de produto_reader code>
D'autres ont proposé des moyens d'utiliser des pandas. Vous devez le considérer si vos fichiers sont grands ou si vous avez besoin de faire cette opération assez souvent. Mais le module CSV est suffisant ici.
Vous ne pouvez pas utiliser les dicts simples ici car les touches ne sont pas uniques: Je vais admettre ici que toutes les touches doivent être présentes dans le produit.csv, mais certains sous-produits ne peuvent avoir aucun sous-produit associé (ce qui signifie une jointure externe gauche dans les formulures de base de données). P> alors je vais utiliser: p> Code pourrait être: p> supposant que vos fichiers CSV sont des fichiers de valeurs séparés de virgule de virgule de virgule, cela donne: P> sous-production.csv code> a 2 lignes différentes avec le même ID 1. Donc, je voudrais donc utiliser des dicts de listes à la place. p>
product_id,name,subproduct_name,volume
1,Handwash,Dettol,20
1,Handwash,Lifebuoy,50
2,Soap,Lux,100
Qu'est-ce que tu as essayé jusque-là? Veuillez toujours publier le code avec vos questions afin que nous puissions faire des suggestions / modifications à ce que vous faites et n'écrivez pas votre projet à partir de zéro.