假设我有一个csv.DictReader对象,我想把它写成CSV文件.我怎样才能做到这一点?
我知道我可以像这样编写数据行:
dr = csv.DictReader(open(f), delimiter='\t')
# process my dr object
# ...
# write out object
output = csv.DictWriter(open(f2, 'w'), delimiter='\t')
for item in dr:
output.writerow(item)
Run Code Online (Sandbox Code Playgroud)
但是我如何包含字段名?
有没有办法在读取和使用Python Pandas写入时保留csv文件中列的顺序?例如,在此代码中
import pandas as pd
data = pd.read_csv(filename)
data.to_csv(filename)
Run Code Online (Sandbox Code Playgroud)
输出文件可能不同,因为不保留列.
我正在寻找对前一个SO问题的非常有用的答案,在尝试将一个dicts列表写入CSV文件时可以在这里找到.我使用的代码是:
with open((filename), 'wb') as outfile:
write = csv.DictWriter(outfile, keyList)
write.writer.writerow(keyList)
write.writerows(data)
Run Code Online (Sandbox Code Playgroud)
其中keyList是csv文件的标头列表.
代码工作得很好,这很好,但我不明白为什么我必须writer明确地调用底层实例来编写keyList(头文件).我尝试过那条线write.writerow(keyList),但它不起作用.我很好奇为什么会这样,我可以更好地理解Python的DictWriter是如何工作的.
是否有更清洁/更好的写作方式?
我知道我可以直接写一个字典列表到CSV文件.同样,有没有直接的方法将字典列表列表写入python中的csv文件,而无需手动迭代每一行?
样本数据
[[{'e': 46, 'p': 100, 'n': 0, 'a': 100, ...},
{'e': 29, 'p': 40, 'n': 1, 'a': 40, ...}, ...],
[{...}, ...]
Run Code Online (Sandbox Code Playgroud)
预期的格式
e,p,n,a,....
46,100,0,100,....
29,40,1,40,...
.......
Run Code Online (Sandbox Code Playgroud)
请注意,这不是字典列表,而是字典列表的列表
这里询问如何将字典列表(具有匹配的键)转储到 csv 文件中。
我的问题是类似的,但是我假设字典不一定匹配键:在这种情况下,我希望该单元格没有值(或分配 None/0/..)。下面举例。
例子
to_csv = [{'name':'bob','age':25,'weight':200, 'height':181},
{'name':'jim','age':31,'weight':180}]
Run Code Online (Sandbox Code Playgroud)
应该变成:
name,age,weight,height
bob,25,200,181
jim,31,180,None
Run Code Online (Sandbox Code Playgroud) 我有一个 JSON 文件,其中包含超过 46k 条英语和其他语言的推文,我想将其保存为 csv 文件。以下是 json 文件的一部分。
\n\n [{"user_id": 938118866135343104, "date_time": "03/20/2018 18:38:35", "tweet_content": "RT @PTISPOfficial: \xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86 \xd8\xaa\xd8\xad\xd8\xb1\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x86\xd8\xb5\xd8\xa7\xd9\x81 \xda\xa9\xdb\x92 \xd9\x88\xd8\xa7\xd8\xa6\xd8\xb3 \xda\x86\xdb\x8c\xd8\xa6\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb4\xd8\xa7\xdb\x81 \xd9\x85\xd8\xad\xd9\x85\xd9\x88\xd8\xaf \xd9\x82\xd8\xb1\xdb\x8c\xd8\xb4\xdb\x8c \xd8\xa8\xd8\xba\xdb\x8c\xd8\xb1 \xda\xa9\xd8\xb3\xdb\x8c \xd9\xbe\xd8\xb1\xd9\x88\xd9\xb9\xd9\x88\xda\xa9\xd9\x88\xd9\x84 \xda\xa9\xdb\x92 \xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86 \xd8\xb3\xd9\xbe\xd8\xb1 \xd9\x84\xdb\x8c\xda\xaf \xda\xa9\xd8\xa7 \xd9\x85\xdb\x8c\xda\x86 \xd8\xaf\xdb\x8c\xda\xa9\xda\xbe\xd9\x86\xdb\x92 \xda\xa9\xdb\x92 \xd9\x84\xd8\xa6\xdb\x92 \xd8\xa7\xd8\xb3\xd9\xb9\xdb\x8c\xda\x88\xdb\x8c\xd9\x85 \xd9\x85\xe2\x80\xa6", "tweet_id": 976166125502427136}\n{"user_id": 959235642, "date_time": "03/20/2018 18:38:35", "tweet_content": "At last, Pakistan Have Witnessed The Most Thrilling Match Of Cricket In Pakistan, The Home. \\n\\n#PZvQG \\n#ABC", "tweet_id": 976166125535973378}\n{"user_id": 395163528, "date_time": "03/20/2018 18:38:35", "tweet_content": "RT @thePSLt20: SIX! 19.4 Liam Dawson to Anwar …Run Code Online (Sandbox Code Playgroud)