【问题标题】:How to pass Excel data to MongoDB with Python?如何使用 Python 将 Excel 数据传递给 MongoDB?
【发布时间】:2021-03-14 21:23:26
【问题描述】:

我需要通过 Python 代码将数据从 Excel 文件传递​​到 MongoDB 表。 我的 Excel 文件如下所示:

Name Age Subjects
Alex 12 Math Physics Biology
Mag 67 Chemistry History

MongoDB 输出应如下所示:

--1 对象--:
姓名:亚历克斯
年龄:12
科目:数学、物理、生物

--2 对象--:
姓名:麦格
年龄:67
科目:化学、历史

我写了这样的代码:

import csv
import pymongo
import pandas as pd
read_file = pd.read_excel("T1.xls")
read_file.to_csv("Test.csv",
                  index=None,
                  header=True)
df = pd.DataFrame(pd.read_csv("Test.csv"))

connection = pymongo.MongoClient('127.0.0.1:27017')
db = connection.test
collection = db.table1
table = open('Test.csv', 'r')
reader = csv.DictReader(table)
collection.drop()
header = df.head()

for each in reader:
    row = {}
    for field in header:
        row[field] = each[field]
    collection.insert_one(row)

但是,我有两个问题:

  1. 无需将 .xslx 文件转换为 .csv 的步骤
  2. 因此,我还有 2 个不需要的列,如未命名:3,未命名:4 以及其他主题的名称,换句话说,此代码将主题分隔为单列,因为在我的 Excel 文件中我有“主题”作为联合细胞

有人可以帮我解决这些问题吗?

【问题讨论】:

    标签: python excel pandas mongodb parsing


    【解决方案1】:
    1. read_excel 直接给你一个DataFrame,所以不用转成CSV
    df = pd.read_excel("T1.xls")
    
    1. 您可以创建一个列Subjects 女巫是一个包含所有主题的列表
    df['Subjects'] = df[["Subjects", "Unnamed: 3", "Unnamed: 4"]].values.tolist()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2017-12-29
      相关资源
      最近更新 更多