String Join обрабатывает True как логическое значение, а не строку

#python #python-3.x #pandas #dataframe #typeerror

#python #python-3.x #pandas #фрейм данных #ошибка типа

Вопрос:

Я пишу код для чтения данных из CSV-файла в фрейм данных pandas, получения уникальных значений и объединения их в строку. Проблема в том, что один из столбцов содержит значения True и False . Итак, при объединении значений я получаю ошибку

   sequence item 0: expected str instance, bool found
  

Я хочу, чтобы python обрабатывал True как строку, а не логическое значение.

Я перепробовал много вариантов, но ни один из них не сработал.

Полный код и обратная трассировка прилагаются ниже.

 import pandas as pd
df=pd.read_csv('C:/Users/jaiveeru/Downloads/run_test1.csv')
cols=df.columns.tolist()
for i in cols:
    lst=df[i].unique().tolist()
    str1 = ','.join(lst)
    lst2=[str1]
  
 ----> 5     str1 = ','.join(lst)
TypeError: sequence item 0: expected str instance, bool found
  

lst2 должно иметь значения ['True,False']

Ответ №1:

Python 3 не выполняет предварительного неявного приведения. Вам нужно будет явно преобразовать ваши логические значения в строки.

Это можно легко сделать с помощью map встроенной функции, которая применяет функцию к каждому элементу итерации и возвращает результат:

 str1 = ','.join(map(str, lst))
  

Ответ №2:

Используйте .astype(str)

Пример:

 df[i].unique().astype(str).tolist()