我想在csv中写一个列表,当我尝试这样做时,我会收到以下错误
out.writerows(fin_city_ids)
_csv.Error: iterable expected, not numpy.int64
我的代码如下
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)
以下是fin_ids的输出
[1002774, 0, 1000702, 1000339, 1001620, 1000710, 1000202, 1003143, 147897, 31018, 1001502, 1002812, 1003026, 1003280, 1003289, 1002714, 133191, 5252218, 6007821, 1002632]
Org_id是一个包含重复ID的dataFrame .fin_ids是一个包含ids的unqiue值的列表.Fin ID是从数据框org_id派生的唯一ID的列表。
所需的输出是一个CSV,其中所有值都在不同的行中,因为我将在稍后将数据加载到sql表中。
答案 0 :(得分:7)
你可以通过多种方式完成这项工作。但是,如果您希望writerows
模块csv
,那么您必须先将列表fin_ids
转换为列表序列:
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()
另一种方法是使用pandas .to_csv()
中的Series
方法。由于您从数据框开始,您可以这样做:
org_city_id['org_id'].unique().to_csv("D:/dataset/fin_ids.csv", index=False)
这两个都应生成包含以下数据的csv文件:
1002774
0
1000702
1000339
1001620
1000710
1000202
1003143
147897
31018
1001502
1002812
1003026
1003280
1003289
1002714
133191
5252218
6007821
1002632
答案 1 :(得分:0)
尝试一下:
with open('./../filename.csv', 'w') as output:
out = csv.writer(output)
out.writerows(map(lambda x: [x], **array_name))