假設我有一個布爾列存盤為 acategory
中的 a pandas.DataFrame
。但是有一個轉折 - 基本價值是str
,不是bool
。即,值是"True"
/ "False"
,而不是True
/ False
。
我如何能:
- 更改基礎類別值的 dtype(例如 from
"True"
到True
)和 - 繼續將該欄位存盤為
category
?
例如,將布林值作為字串是一個問題DataFrame.query
。我必須指定DataFrame.query("field == 'True'")
,這太可怕了,哈哈。
僅供參考 - 我不想這樣做DataFrame.astype(dict(field=bool))
,因為那樣我就會失去記憶效率category
。我想保留類別 dtype。
uj5u.com熱心網友回復:
也許你可以試試:
df['field'] = df['field'].replace({'True': True, 'False': False})
print(df['field'])
# Output
0 False
1 True
2 True
3 False
Name: field, dtype: category
Categories (2, object): [False, True] # <- bool
與query
:
>>> df.query('field == True')
field
1 True
2 True
設定:
df = pd.DataFrame({'field': ['False', 'True', 'True', 'False']}, dtype='category')
print(df['field'])
# Output
0 False
1 True
2 True
3 False
Name: field, dtype: category
Categories (2, object): ['False', 'True'] # <- str
uj5u.com熱心網友回復:
您可以嘗試這樣做(這些值可以用作布林值,但在資料型別中被稱為類別):
import pandas as pd
# before
data = ['True', 'False', 'True']
df = pd.DataFrame({'data': data}).astype("category")
print('[BEFORE] \n data type = {0} \n values : {1}'.format(df['data'].dtypes, df.values))
# after
df['data'] = list(map(bool, list(df['data'].values)))
df = df.astype("category")
print('[AFTER] \n data type = {0} \n values : {1}'.format(df['data'].dtypes, df.values))
輸出:
[BEFORE]
data type = category
values : [['True']
['False']
['True']]
[AFTER]
data type = category
values : [[True]
[True]
[True]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/484923.html
上一篇:如何計算ROW(R)的變化次數
下一篇:如何根據列名將功能應用于特定列?