簡體   English   中英

從 Blob 存儲讀取 CSV 文件到 pandas dataframe 並忽略來自源系統的分頁行

[英]Read CSV file from Blob Storage to pandas dataframe and ignore pagination rows from source system

我的任務是從 blob 存儲中讀取 csv 文件以進行數據操作,這很容易做到:

import pandas as pd
from io import StringIO
blob_client_instance = blobService.get_blob_client(
    "testflorencia", "TakeUpStores.csv", snapshot=None)

downloaded_blob = blob_client_instance.download_blob()
blob = downloaded_blob.content_as_text(encoding=None)
df = pd.read_csv(StringIO(blob))
df

但是我收到此錯誤:

initial_value must be str or None, not bytes

我無法在此處共享該文件,因為它是機密文件,但我注意到每 20 行有一個帶有特殊字符的特殊分頁行:

 = 37.364.304;;;; --> special character not rendered by StackOverflow

如何將此 csv 讀入 pandas 並忽略這些行?

我也試過沒有編碼參數,但我得到了另一個錯誤

'utf-8' codec can't decode byte 0xc3 in position 16515: invalid continuation byte

從下載的文本中過濾掉特殊行,然后將其提供給 Pandas。

# ...
blob = downloaded_blob.content_as_text(encoding=None)
lines = "\n".join(line for line in blob.splitlines() if not line.startswith(" = "))  # or whatever is the criteria for a special row
df = pd.read_csv(StringIO(blob))

如果您所有的特殊分頁行都以相同的單個字符開頭,那么您可以使用comment參數

注釋str,可選

指示不應解析行的其余部分。 如果在一行的開頭找到,則該行將被完全忽略。 此參數必須是單個字符。 與空行一樣(只要skip_blank_lines=True ),參數 header 會忽略完全注釋的行,但skirows 不會。 例如,如果comment='#' ,解析帶有header=0#empty\na,b,c\n1,2,3將導致'a,b,c'被視為 header。

df = pd.read_csv(StringIO(blob), comment='=')

或取決於分頁行的第一個字符:

df = pd.read_csv(StringIO(blob), comment=' ')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM