String Join рассматривает True как логическое значение, а не как строку - PullRequest
4 голосов
/ 26 марта 2019

Я пишу код для чтения данных из файла 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']

Ответы [ 2 ]

4 голосов
/ 26 марта 2019

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

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

str1 = ','.join(map(str, lst))
3 голосов
/ 26 марта 2019

Использование .astype(str)

Ex:

df[i].unique().astype(str).tolist()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...