我在S3上有一個JSON檔案,其中有以下資料:
我在S3上有一個JSON檔案。
{"id"/span>: "1"/span>, "col1"/span>: null, "col2"/span>: "Test1"/span>, "col3"/span>: true}。
{"id": "2"/span>, "col1"/span>: "abc", "col2": "Test2", "col3": null}。
{"id": "3"/span>, "col1"/span>: "def", "col2": "Test3"/span>, "col3"/span>: true}。
注意,col3里面有布林值,但有一行是空值。 下面是我的代碼:
import pandas as pd
source_path = 's3://bucket/prefix/file.json'True)
df.dtypes
輸出:
id int64
col1 object
col2 object object
col3 float64
dtype。object object
df:
id col1 col2 col3
0 1 None Test1 1.0
1 2 abc Test2 NaN
2 3 def 測驗3 1.0
為什么col3被打成了float?
Col1有一個null,但似乎正確地被打成了一個物件(字串)。 是否有一個通用的方法(不明確地將 "col3 "轉換為布爾型別)來獲得資料框架上的布爾型別?
uj5u.com熱心網友回復:
假設OP認為null是false,我們可以將col3的None值替換為False
import json
data_str = ''{"id": "2", "col1": "abc", "col2": "Test2", "col3": null}''/span>
data = json.loads(data_str)
if not isinstance(data['col3'], bool) 。
data['col3'] = False。
print(data)
uj5u.com熱心網友回復:
對于這種情況,似乎在read_json呼叫中添加 "dtype=False "就能得到我想要的行為。
import pandas as pd
source_path = 's3://bucket/prefix/file.json'True, dtype=False)
df.dtypes
輸出:
id object
col1 object object
col2 object object
col3 object object
d型別。object object
如果我把這個資料框架作為一個parquet檔案寫入S3,輸出的檔案正確地被打成了布爾型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/334298.html
標籤:
