read_csv cannot use dtype and true_values/false_values · Issue #34655 · pandas-dev/pandas (original) (raw)
Hi friends,
Not sure if this is working as intended, but it appears you cannot use both dtype and true_values or false_values kwargs when reading csv.
from io import StringIO from csv import writer
import pandas as pd import pytest
def test_pandas_read_write(): df = pd.DataFrame({'A': ['yes', 'no'], 'B': ['yes', 'no']}) out_io = StringIO(newline='') df.to_csv(out_io, index=False)
out_io.seek(0)
pd.read_csv(out_io)
out_io.seek(0)
kwargs = dict(dtype={'A': 'boolean', 'B': 'boolean'})
with pytest.raises(ValueError):
pd.read_csv(out_io, **kwargs)
kwargs.update({'true_values': ['yes'], 'false_values': ['no']})
out_io.seek(0)
with pytest.raises(ValueError):
pd.read_csv(out_io, **kwargs)
out_io.seek(0)
# pop dtype so true/false values work
kwargs.pop('dtype')
pd.read_csv(out_io, **kwargs)
Using converters kwarg to get the data how I like will fix my problem, but we may want to update the docs to let users know true/false user defined values will not work in conjugation with providing the boolean type.