Je veux écrire une liste dans un csv, en essayant de le faire je reçois l'erreur ci-dessous
out.writerows(fin_city_ids)
_csv.Error: iterable expected, not numpy.int64
Mon code est comme ci-dessous
org_id.append([pol_id,bldest_id])
fin_ids=list(org_city_id['org_id'].unique())
print(fin_ids)
out = csv.writer(open("D:/dataset/fin_ids.csv","w"), delimiter='|')
out.writerows(fin_ids)
Voici le résultat de fin_ids
[1002774, 0, 1000702, 1000339, 1001620, 1000710, 1000202, 1003143, 147897, 31018, 1001502, 1002812, 1003026, 1003280, 1003289, 1002714, 133191, 5252218, 6007821, 1002632]
Org_id est un dataFrame contenant des identifiants en double .fin_ids est une liste contenant des valeurs d'identificateur identiques. Fin ID est une liste d'identifiants uniques dérivés du cadre de données org_id.
la sortie souhaitée est un fichier CSV avec toutes les valeurs dans des lignes séparées, car je vais charger les données dans une table SQL ultérieurement.
Vous pouvez le faire de plusieurs manières. Mais si vous souhaitez writerows
à partir du module csv
, vous devrez d'abord transformer votre liste fin_ids
en une séquence de listes:
fin_ids = [1002774, 0, 1000702, 1000339,
1001620, 1000710, 1000202, 1003143, 147897,
31018, 1001502, 1002812, 1003026, 1003280,
1003289, 1002714, 133191, 5252218, 6007821, 1002632]
outfile = open('D:/dataset/fin_ids.csv','w')
out = csv.writer(outfile)
out.writerows(map(lambda x: [x], fin_ids))
outfile.close()
Une autre solution consisterait simplement à utiliser la méthode .to_csv()
de pandas Series
. Depuis que vous avez commencé avec un cadre de données, vous pouvez simplement faire:
org_city_id['org_id'].unique().to_csv("D:/dataset/fin_ids.csv", index=False)
Ces deux fichiers devraient générer un fichier csv avec les données suivantes:
1002774
0
1000702
1000339
1001620
1000710
1000202
1003143
147897
31018
1001502
1002812
1003026
1003280
1003289
1002714
133191
5252218
6007821
1002632
Essaye ça:
with open('./../filename.csv', 'w') as output:
out = csv.writer(output)
out.writerows(map(lambda x: [x], **array_name))