为什么我得到TypeError?

时间:2018-03-05 07:14:28

标签: python pandas lambda typeerror

如果这是一个愚蠢的问题,请提前告诉我,但我试图找出并且无法通过

我有一个名为pandas dataframe数据的字典,其中 数据[' class_size'] 具有以下数据

CSD    SCHOOL CODE    SCHOOL NAME
1      M015           P.S. 015 Roberto Clemente
1      M019           P.S. 019 Asher Levy
1      M019           P.S. 019 Asher Levy
.      ....           ..........
.      ....           ..........
and many more

我尝试使用以下lambda函数作为pandas.apply()参数,如果长度为1,则将CSD列填充为0

data['class_size']['padded_csd'] = data["class_size"]["CSD"].apply(lambda x: str(x).zfill(2) if len(str(x)) == 1 else x )

这确实很好,但在使用连接后,即

data['class_size']['DBN'] = data['class_size']['padded_csd'] + data['class_size']['SCHOOL CODE']

我收到的TypeError为

  

' +'不支持的操作数类型' INT'和' STR'

我甚至检查了两列的类型" padded_csd"和" SCHOOL CODE",它们都是字符串,那么为什么会出现TypeError?

提前感谢您提供任何帮助

P.S。我知道我可以创建一个函数并在那里使用而不是lambda它甚至可以工作但是由于某些原因我真的必须使用lambda函数

1 个答案:

答案 0 :(得分:3)

尝试

data['class_size']['padded_csd'] = data["class_size"]["CSD"].apply(lambda x: str(x).zfill(2) if len(str(x)) == 1 else str(x) )  #Update else str(x)
相关问题