1
我有一個帶有逗號(「,」)的字段/列的CSV文件。我將這個CSV加載到mongodb中進行數據操作。我想將逗號的所有文本去掉,只留下逗號左邊的文字。使用Python刪除Mongodb中的字段
完成此任務的最有效方法是什麼?在我的mongodb csv導入腳本(我利用熊貓)?之後當數據已經在MongoDB中?老實說,我是編程新手,想知道如何在任何一種情況下做到這一點,但我希望看到最有效的解決方案。
這裏是我的CSV到Python導入腳本:
#!/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的。我試圖改變的最後一個字段,「操作系統映像」:
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"
編輯:我發現做什麼,我需要通過大熊貓上傳到MongoDB的集合之前的方法。我必須這樣做兩次,因爲保存列數據使用兩種不同的分隔符和正則表達式將無法正常工作:
# 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。大的幫助。我想找到一種方法來更新mongodb中的現有條目,但是我有這個工作在我的導入腳本上,可以用它作爲更新的藍圖 - 雖然我可能只是清除我的數據庫,然後重新加載並繼續前進。 – TobyMcCann