#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()