Skip to content

Commit 7c01e4f

Browse files
authored
Fix/infer object column type bool (#737)
* support bool type in infer_object_column_type * infer_object_column_type ut
1 parent 27b1051 commit 7c01e4f

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

python/tests/test_dataframe.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from tsfile import TsFileTableWriter, ColumnCategory
2727
from tsfile import to_dataframe
2828
from tsfile.exceptions import ColumnNotExistError, TypeMismatchError
29-
from tsfile.tsfile_table_writer import validate_dataframe_for_tsfile
29+
from tsfile.tsfile_table_writer import validate_dataframe_for_tsfile, infer_object_column_type
3030

3131

3232
def convert_to_nullable_types(df):
@@ -51,6 +51,14 @@ def convert_to_nullable_types(df):
5151
return df
5252

5353

54+
def test_infer_object_column_type_bool():
55+
"""infer_object_column_type should infer BOOLEAN for object column containing bool values."""
56+
s_true = pd.Series([True, False], dtype=object)
57+
assert infer_object_column_type(s_true) == TSDataType.BOOLEAN
58+
s_false = pd.Series([False], dtype=object)
59+
assert infer_object_column_type(s_false) == TSDataType.BOOLEAN
60+
61+
5462
def test_write_dataframe_basic():
5563
table = TableSchema("test_table",
5664
[ColumnSchema("device", TSDataType.STRING, ColumnCategory.TAG),

python/tsfile/tsfile_table_writer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,12 @@ def infer_object_column_type(column_series: pd.Series) -> TSDataType:
6969
return TSDataType.BLOB
7070
if isinstance(value, (date, datetime)):
7171
return TSDataType.DATE
72+
if isinstance(value, bool):
73+
return TSDataType.BOOLEAN
7274
if isinstance(value, str):
7375
return TSDataType.STRING
7476
raise TypeError(
75-
f"Cannot infer type from object column: expected str/bytes/date, got {type(value).__name__}: {value!r}"
77+
f"Cannot infer type from object column: expected str/bytes/date/bool, got {type(value).__name__}: {value!r}"
7678
)
7779

7880

0 commit comments

Comments
 (0)