#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. скорее всего, ничего. Есть шанс, что в какой-то момент я отфильтрую его… но я мог бы так же легко фильтровать, предполагая, что это строка. Как я могу заставить его читать как строку и не пытаться преобразовать?