【发布时间】:2021-05-01 06:23:52
【问题描述】:
我有一个 python 脚本,它从 MongoDB 数据库中获取 JSON 文件,执行 ETL 过程,例如过滤、展平字典,最后将数据帧导出为 CSV(工作正常)。
我遇到的问题是当我在记事本中打开 CSV 时,文本列没有用引号引起来。
如果我错了,请纠正我,但我相信当列的数据类型被指定为字符串/文本时,当您在 Excel 中打开该文件时没有引号但在记事本中打开时应该显示那些字符串列在引号内。
from pymongo import MongoClient
import pandas as pd
from azure.storage.filedatalake import DataLakeServiceClient
from azure.core._match_conditions import MatchConditions
from azure.storage.filedatalake._models import ContentSettings
from pandas import json_normalize
from datetime import datetime, timedelta
import numpy as np
import json
mongo_client = MongoClient("XXXX")
db = mongo_client.rfqdb
table = db.request
document = table.find({'createdAt': {'$gt': datetime.utcnow() - timedelta(days=7)}})
docs = list(document)
docs = json.dumps(docs,default=str)
docs = docs.replace(r"\n",'').replace(r"\r\n",'').replace(r"\r",'')
docs = json.loads(docs)
docs = json_normalize(docs)
docs = docs[["id","reportName"]].astype("string")
print(docs.dtypes)
id string
reportName string
当我在 Notepad++ 中打开从 Pandas 导出的 CSV 文件时,它不会在引号内显示字符串:
任何人都可以对这种情况有所了解,因为我在 Azure 数据工厂中完成了同样的过程,我将这两列映射为字符串,当我在记事本中打开 CSV 时,它会显示包含在引号内的字符串(见下文),所以我有点困惑为什么 Python Pandas 在导出时没有显示这个。
提前致谢
【问题讨论】:
标签: python pandas csv export-to-csv