Python 获得';int';对象不可下标";将方法应用于数据系列时出错
我有一个类似于图片中的数据框。当我应用图中的lambda时,它不会抛出任何错误 但是当我这样做的时候Python 获得';int';对象不可下标";将方法应用于数据系列时出错,python,pandas,analytics,Python,Pandas,Analytics,我有一个类似于图片中的数据框。当我应用图中的lambda时,它不会抛出任何错误 但是当我这样做的时候 list = pandas.Series([1,2,3,4,5]) new_list = list.apply(lambda x: x/x[0]) 它给了我“'int'对象不可下标”错误。这两者有什么区别吗?我做错了什么 对于一个系列,按元素应用操作。要引用系列的第一个元素,需要使用列表[0]而不是x[0]: new_list = list.apply(lambda x: x/list[0]
list = pandas.Series([1,2,3,4,5])
new_list = list.apply(lambda x: x/x[0])
它给了我“'int'对象不可下标”错误。这两者有什么区别吗?我做错了什么
对于一个系列,按元素应用操作。要引用系列的第一个元素,需要使用列表[0]而不是x[0]:
new_list = list.apply(lambda x: x/list[0])
对于数据帧,默认情况下apply按列操作,这就是x/x[0]工作的原因
要使用相同的语法,可以使用:
new_list = list.to_frame().apply(lambda x: x/x[0])
顺便说一句,使用内置类型名(list)作为变量名不是一个好主意。对于一个系列,请按元素操作。要引用系列的第一个元素,需要使用列表[0]而不是x[0]:
new_list = list.apply(lambda x: x/list[0])
对于数据帧,默认情况下apply按列操作,这就是x/x[0]工作的原因
要使用相同的语法,可以使用:
new_list = list.to_frame().apply(lambda x: x/x[0])
顺便说一句,使用内置类型名(列表)作为变量名不是一个好主意。@beebeckzzz因为当您对df使用apply时,x指整个列,这是一个系列,因此x[0]起作用。@beebeckzzz因为当您对df使用apply时,x指整个列,这是一个系列,因此x[0]起作用。