Я неправильно использую "sep = 'x'" в to_csv с пандами? - PullRequest
0 голосов
/ 13 января 2019

У меня есть программа, которая читает электронную таблицу и манипулирует некоторыми вещами, а затем сохраняет файл конфигурации, чтобы вы могли вернуться к тому же виду форматирования, который вы настроили в будущем. Файл конфигурации сохраняется как csv.

Я сталкиваюсь с проблемой, когда столбец в одном наборе данных содержит запятые, которые ломают вещи. Так что я использовал параметр 'sep' в to_csv и read_csv, чтобы избежать этой проблемы, но это все еще происходит.

Это имя столбца, вызывающее проблему: [«Выбор, расчеты, ИЛИ метки ползунка»]

Я использовал 'sep =' | ' для чтения и записи файла csv, но проблема остается.

Спасибо!

Вот код ...

def fxThree_A(self):
    # function to save column choices to file
    # get name for configuration from user
    #
    # save values from list of active columns to .csv file
    self.config_df = pd.DataFrame(columns = ['config_name','active_columns', 'inactive_columns']) 
    self.config_df.loc[0,'config_name'] = 'config_one'
    self.config_df.loc[0,'active_columns'] = ','.join(self.columns_active)
    self.config_df.loc[0,'inactive_columns'] = ','.join(self.columns_inactive)
    self.config_df.to_csv(self.rootFolder + '__config.csv', sep = '|', index=False)
    print(self.columns_inactive)

def fxThree_B(self):
    # function to read column choices from file
    # read in the config file
    self.config_df = pd.read_csv(self.rootFolder + '__config.csv', sep = '|',)#, encoding='ISO-8859-1')
    # display list of preset configurations
    # pick which config to use from dropwdown
    # apply stored settings to current columns
    self.columns_active = self.config_df.loc[0,'active_columns'].split(",")
    self.columns_inactive = self.config_df.loc[0,'inactive_columns'].split(",")
    # change button colors to match the new values
    for button in self.column_buttons:
        if button.cget("text") in self.columns_active:
            button.configure(bg = "light green")
        elif button.cget("text") in self.columns_inactive:
            button.configure(bg = "red")    
        # catch any buttons not in the list for some reason, i.e. if the file format changed since last time the config was saved
        else:
            button.configure(bg = "orange")
            tk.messagebox.showerror("Alert", "File format changed since configuration was last saved. Please re-select columns and re-save your configuration.")

1 Ответ

0 голосов
/ 13 января 2019

О, ЧЕЛОВЕК.

Это не был разделитель в файле, это было то, как я соединял список в строку, чтобы выписать список как одну ячейку таблицы.

Я изменил ',' в этой строке на '||', и это решило проблему.

self.config_df.loc[0,'inactive_columns'] = '||'.join(self.columns_inactive)

Иногда сообщение о проблеме создает момент ясности:)

Должен ли я оставить это для других?

...