必须使用python将csv的数据推送到mongodb数据库。我的csv包含float,datetime&的数据类型。字符串格式。但是在将数据传递给mongo之后,它反映为字符串。
import csv
import json
import pandas as pd
import sys, getopt, pprint
from pymongo import MongoClient
csvfile = open("C://test1//Jan02//final-current.csv", "r")
reader = csv.DictReader( csvfile )
mongo_client=MongoClient()
db=mongo_client.January
db.segment.drop()
header= ["Instrument Name", "Date", "High", "Low", "Open", "Close", "V"]
for each in reader:
row={}
for field in header:
row[field]=each[field]
db.segment3.insert(row)
csvfile.close()
我的输出:
{
"_id" : ObjectId("54aa38eafb2a03c4f4b46e78"),
"Instrument Name" : "HAVELLS15MARFUT",
"High" : "280.85",
"Low" : "280.85",
"V" : "1000",
"Date" : "2015-02-01 13:40:00",
"Close" : "280.85",
"Open" : "280.85"
}
但是我在我的csv中查看,它显示开放,高,低,音量,接近浮动类型& datetime数据类型中的日期。预计的结果是字符串。帮助我纠正问题。
提前致谢
答案 0 :(得分:0)
一个非常简单的选择就是使用映射字典转换数据:
csv_values = {"Instrument Name": "my_header", "High": "100", "Low": "56"}
header = {"Instrument Name": str, "High": int, "Low": int}
for k, v in header.iteritems():
new_value = v(csv_values[k])
print new_value, type(new_value)
输出:
100 <type 'int'>
56 <type 'int'>
my_header <type 'str'>
只需确定数据的数据类型并绑定转换函数,就可以使用更复杂的函数并检查数据的完整性,最后只需将其保存到MongoDB。