[英]Read csv from Azure blob Storage and store in a 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.