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')