gpt4 book ai didi

python - 如何在 Python 中将 csv 文件从宽格式转换为长格式

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:31 25 4
gpt4 key购买 nike

想象一下下面的情况:

Name    Links       Blabla

name1 a b c x

name2 d e f g h y

如您所见,链接字段有几个由空格分隔的字符串。我想要获得的是:

Name    Links       Blabla

name1 a x
name1 b x
name1 c x
name2 d y
name2 e y
name2 f y
name2 g y
name2 h y

我不知道为什么它不起作用。这是我目前所拥有的:

reader = csv.DictReader(open(mySourceFile), delimiter = myDelimiter)
#..Code for opening Writer etc..
mySourceFileHeaders = reader.fieldnames
myExtraRows = row["Links"].split()
for line in reader:
for counter in myExtrarows:
writer.writerow(line)

我有点卡在这里。我会继续寻找(不是寻找一颗金子般的心),但与此同时:感谢您的帮助!

最佳答案

这是数据表从宽格式到长格式的标准转换(因此我建议对您的问题标题进行修改)。

我不确定 DictReader 在这里给你带来了什么,但你需要使用嵌套循环来处理这个问题

with open(inputfile) as f1, open(outputfile,"w") as f2:
r=csv.DictReader(f1)
w = csv.writer(f2)
w.writerow(r.fieldnames)

for d in r:
links=d['Links'].split()
for l in links:
w.writerow([d['Name'], l, d['Blabla']])

外层循环遍历输入文件。然后,内部循环在当前输入行的链接字段中为每个条目写出一行。

with 的使用确保输入和输出文件在您完成后关闭。

给定以下输入

Name,Links,Blabla
name1,"a b c","x"
name2,"d e f g h","y"

这会产生这样的输出文件

Name,Links,Blabla
name1,a,x
name1,b,x
name1,c,x
name2,d,y
name2,e,y
name2,f,y
name2,g,y
name2,h,y

关于python - 如何在 Python 中将 csv 文件从宽格式转换为长格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29433040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com