Python 熊猫应用Lambda导致类型错误:';int';对象不可下标
我有一个数据框架,它的一个示例如下: 我的代码有问题。我收到以下错误消息:Python 熊猫应用Lambda导致类型错误:';int';对象不可下标,python,dataframe,lambda,Python,Dataframe,Lambda,我有一个数据框架,它的一个示例如下: 我的代码有问题。我收到以下错误消息: Traceback (most recent call last): File "C:/Users/....py", line 12, in <module> dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False') File "C:\Users\....py"
Traceback (most recent call last): File "C:/Users/....py", line 12, in <module>
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False') File "C:\Users\....py", line 3848, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype) File "pandas\_libs\lib.pyx", line 2329, in pandas._libs.lib.map_infer
File "C:/Users/....py", line 12, in <lambda>
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False')
TypeError: 'int' object is not subscriptable
代码的问题在于,您正在对单个列使用
apply()
,并且正在为其编制索引
只需在lambda
df['Year'].apply(lambda x: print(x))
它将在下面输出
2017
2018
2018
2015
2015
2015
您的代码正在尝试索引整数值x['Year']
。在此x
中是整数年,如2018年、2019年等
将此更改为
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False')
这个
使用
你认为np.where方法的计算速度会更快吗?
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False')
dfF['CCRYear'] = dfF['Year'] == dfF['MaxSS Year']
dfF['CCRYear'] = np.where(dfF['Year'] == dfF['MaxSS Year'], 'True', 'False')