将嵌套列表写入 CSV (Python)
Posted
技术标签:
【中文标题】将嵌套列表写入 CSV (Python)【英文标题】:Writing a nested list into CSV (Python) 【发布时间】:2018-08-10 23:47:43 【问题描述】:我有一个如下所示的列表:
hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
我只是想将它写入一个 csv 文件,如下所示:
keyword 1 keyword 2 frequency
case iphone 91524
adapter iphone 12233
battery smartphone 88884
我想不通。我也无法将列表转换为 DataFrame。我尝试应用这里建议的一些代码Writing a Python list of lists to a csv file,但没有成功。
【问题讨论】:
writer.writerows((a,b,c) for (a, b), c in data)
如果您要使用该数据,也可以查看 pandas。
【参考方案1】:
如果在pandas
s=pd.Series(dict(hello)).reset_index()
s.columns=['keyword 1', 'keyword 2', 'frequency']
s
Out[1012]:
keyword 1 keyword 2 frequency
0 adapter iphone 12233
1 battery smartphone 88884
2 case iphone 91524
【讨论】:
【参考方案2】:你可以使用解包:
import csv
hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
with open('filename.csv', 'w') as f:
write = csv.writer(f)
write.writerows([['keyword 1', 'keyword 2', 'frequency']]+[[a, b, c] for [a, b], c in hello])
【讨论】:
【参考方案3】:Pandas 对此很方便:
import pandas as pd
hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
df = pd.DataFrame([[i[0][0], i[0][1], i[1]] for i in hello],
columns=['keyword 1', 'keyword 2', 'frequency'])
# keyword 1 keyword 2 frequency
# 0 case iphone 91524
# 1 adapter iphone 12233
# 2 battery smartphone 88884
df.to_csv('file.csv', index=False)
【讨论】:
【参考方案4】:如果您可以使用pandas
,您可以执行以下操作:
import pandas as pd
hello = [(('case', 'iphone'), 91524), (('adapter', 'iphone'), 12233), (('battery', 'smartphone'), 88884)]
df=pd.DataFrame('keyword1':[i[0][0] for i in hello], 'keyword2':[i[0][1] for i in hello], 'frequency':[i[1] for i in hello])
df[['keyword1', 'keyword2', 'frequency']].to_csv('test.csv')
【讨论】:
这对我来说似乎不是一个特别好的解决方案。循环hello
三次似乎没有必要。以上是关于将嵌套列表写入 CSV (Python)的主要内容,如果未能解决你的问题,请参考以下文章