我有這個資料:
#my.csv
"accountid","configuration"
"797847293","{'dBInstanceIdentifier': 'grafanadb', 'dBInstanceClass': 'db.t3.micro', 'engine': 'postgres', 'dBInstanceStatus': 'available'}"
我怎樣才能帶入如下格式:
# result.csv
accountid,dBInstanceIdentifier,dbInstanceClass,engine
797847293,grafanadb,db.t3.micro,engine
我用 python pandas 嘗試過,但到目前為止沒有分別產生錯誤。
有任何想法嗎?
uj5u.com熱心網友回復:
您可以將 csv 讀取到資料框并configuration使用ast.literal_eval. 然后用于pd.json_normalize將一列字典轉換為列。
import ast
df = pd.read_csv('data.csv', quotechar='"')
out = pd.concat([df['accountid'], pd.json_normalize(df['configuration'].apply(ast.literal_eval))], axis=1)
print(out)
accountid dBInstanceIdentifier dBInstanceClass engine dBInstanceStatus
0 797847293 grafanadb db.t3.micro postgres available
uj5u.com熱心網友回復:
假設您從某個資料源獲得了這個 csv 檔案,它的格式不應該如此不一致,并且應該"在第二行的末尾有一個雙引號,我相信您在復制時已經錯過了。像這樣:
#my.csv
"accountid","configuration"
"797847293","{'dBInstanceIdentifier': 'grafanadb', 'dBInstanceClass': 'db.t3.micro', 'engine': 'postgres', 'dBInstanceStatus': 'available'}"
如果是這種情況,您可以簡單地指定quotechar引數pd.read_csv以告訴它忽略雙引號內的分隔符"
df = pd.read_csv('a.csv', quotechar='"')
然后,您可以在從這里寫回 csv 之前在 pandas 中進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/458766.html
