字符串连接将True视为布尔值而不是字符串

时间:2019-03-26 11:03:08

标签: python python-3.x pandas dataframe typeerror

我正在编写代码以将数据从CSV文件读取到pandas数据帧,并获取唯一值并将它们连接为字符串。问题在于列之一包含值TrueFalse。因此,在连接值时出现错误

  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 个答案:

答案 0 :(得分:4)

Python 3不会执行隐式强制转换。您需要将布尔值显式转换为字符串。

使用map builtin function可以轻松完成此操作,该方法将函数应用于可迭代项的每个项并返回结果:

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

答案 1 :(得分:3)

使用.astype(str)

例如:

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