フィールド/欄にカンマ(「、」)を持つCSVファイルがあります。このCSVをmongodbにロードしてデータを操作します。カンマの左側にテキストだけを残して、すべてのテキストをカンマから右に移動したいと思います。PythonでMongodbのフィールドからテキストを削除する
このタスクを実行する最も効率的な方法は何ですか?私のmongodb csvインポートスクリプト(私はパンダを利用しています)?その後、データが既にMongoDBに入っていますか?正直言って、私はプログラミングに慣れておらず、いずれのシナリオでもそれを行う方法を知りたいですが、私は最も効率的なソリューションを見たいと思います。ここで
は、Pythonのインポートスクリプトに私のcsvファイルです:ここで
#!/usr/bin/env python
import sys
import os
import pandas as pd
import pymongo
import json
def import_content(filepath):
mng_client = pymongo.MongoClient('localhost', 27017)
mng_db = mng_client['swx_inv']
collection_name = 'device.switch'
db_cm = mng_db[collection_name]
cdir = os.path.dirname(__file__)
file_res = os.path.join(cdir, filepath)
data = pd.read_csv(file_res, skiprows=2, skip_footer=1)
data_json = json.loads(data.to_json(orient='records'))
db_cm.remove()
db_cm.insert(data_json)
if __name__ == "__main__":
filepath = '/vagrant/data/DeviceInventory-Category.Switch.csv'
import_content(filepath)
は、CSVの上位3行は、参考のためのものです。
Device,Serial Number,Realm,Vendor,Model,OS Image
ABBNWX0100,SMG3453ESDN,BlAH BLAH,Cisco,WS-C6509-E,"IOS 12.2(33)SXI9, s72033_rp-ADVENTERPRISEK9_WAN-M"
ABBNWX0101,SDG127343S0,BLAH BLAH,Cisco,WS-C4506-E,"IOS 12.2(53)SG8, cat4500-IPBASEK9-M"
ABBNWX0102,TREFDSFY1KK,BLAH BLAH,Cisco,WS-C3560V2-48PS-S,"IOS 12.2(55)SE5, C3560-IPBASEK9-M"
はEDIT:私はMongoDBのコレクションにアップロードする前にパンダを経由して必要なものを行うための方法を発見した私は、最後のフィールド、「OSイメージ」を変更しようとしています。
# Use pandas to read CSV, skipping top 2 lines & footer line from
# CSV export. Set column data to string type.
data = pd.read_csv(
file_res, index_col=False, skiprows=2,
skip_footer=1, dtype={'Device': str, 'Serial Number': str,
'Realm': str, 'Vendor': str, 'Model': str,
'OS Image': str}
)
# Drop rows where Serial Number is empty
data = data.dropna(subset=['Serial Number'])
# Split the OS Image column by "," and ";" to remove extraneous data
data['OS Image'].update(data['OS Image'].apply(
lambda x: x.split(",")[0] if len(x.split()) > 1 else None)
)
data['OS Image'].update(data['OS Image'].apply(
lambda x: x.split(";")[0] if len(x.split()) > 1 else None)
)
ありがとうritesht93を使用します
content
を使用する必要があります。大きな助け。私はmongodbの既存のエントリを更新する方法を見つけたいと思いますが、私はこれをインポートスクリプトで処理しており、更新のための青写真として使うことができます。 – TobyMcCann