Pandas read_csv — Не удалось разобрать строку «FALSE»

#python #pandas

Вопрос:

Я написал некоторый код, который поможет мне провести анализ данных лабораторных испытаний, используя стандартную комбинацию pandas, matplotlib и т. Д. Недавно я добавил в настройку электромагнитный клапан, и мой ПЛК выводит логическое значение, соответствующее состоянию этого клапана.

Однако… моя функция read_csv()

 data = pd.read_csv(os.path.join(path, working_dir, staticDataFileName), encoding_errors='ignore', false_values=[" FALSE", " FALSE"])  

сейчас бомбит эту колонку, и я, похоже, не могу найти опцию записи, чтобы заставить ее работать. Как следует из названия, значение в CSV на самом деле имеет пробел перед ЛОЖНЫМ текстом. Я пытался обойти параметры encoding_errors и false_values, но безрезультатно.

 ValueError: Unable to parse string " False"  During handling of the above exception, another exception occurred:  ValueError Traceback (most recent call last) ~AppDataLocalTemp/ipykernel_12956/1394488190.py in lt;modulegt;  13 #print("Reading static file #"   str(dataset 1)   " of "   str(len(working_dir)))  14 print("Reading static file : "   staticDataFileName[dataset]) ---gt; 15 temp = readRawData(working_dir[dataset], staticDataFileName[dataset], dataset)  16 data = pd.concat([data,temp],ignore_index=True)  17 if compute_dynamic_data:  ~AppDataLocalTemp/ipykernel_12956/153126867.py in readRawData(working_dir, staticDataFileName, dataSet_index)  96 cols=[i for i in data.columns if i not in ["Time"]]  97 for col in cols: ---gt; 98 data[col]=pd.to_numeric(data[col])  99 data.drop_duplicates()  100   ~AppDataLocalProgramsPythonPython39libsite-packagespandascoretoolsnumeric.py in to_numeric(arg, errors, downcast)  181 coerce_numeric = errors not in ("ignore", "raise")  182 try: --gt; 183 values, _ = lib.maybe_convert_numeric(  184 values, set(), coerce_numeric=coerce_numeric  185 )  ~AppDataLocalProgramsPythonPython39libsite-packagespandas_libslib.pyx in pandas._libs.lib.maybe_convert_numeric()  ValueError: Unable to parse string " False" at position 0  

Я подтвердил, что этот столбец со значениями «FALSE» вызывает проблему, удалив значения из этого столбца-и, похоже, он работает нормально.

Я чувствую, что это должно быть просто, но я уверен, что усложняю это.

Комментарии:

1. Эй, Майк! Мне кажется, что код пытается преобразовать «False» в числовое значение в соответствии с тем, что написано внутри readRawData . Это действительно то, что вы собираетесь делать со столбцами, содержащими «Ложь» ?

2. скорее всего, ничего. Есть шанс, что в какой-то момент я отфильтрую его… но я мог бы так же легко фильтровать, предполагая, что это строка. Как я могу заставить его читать как строку и не пытаться преобразовать?