我有这个数据框的一个样本在这里:
此代码有问题。我收到以下错误消息:
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
“年”和“最大SS年”列均为int64数据类型。这是下面的代码:
import pandas as pd
import numpy as np
def cached_date_parser(s):
if s in cache:
return cache[s]
dt = pd.to_datetime(s, format='%Y%m%d', coerce=True)
cache[s] = dt
return dt
dfF = pd.read_csv(r'C:\\Users\\....C_14.csv', parse_dates = [1], header='infer')
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False')
答案 0 :(得分:1)
代码的问题是您在单列上使用https://tonycosmosdb.mongo.cosmos.azure.com:443/
,并且正在为其编制索引。
看看您在做什么,只需在您的apply()
中打印x
lambda
它将在下面输出
df['Year'].apply(lambda x: print(x))
您的代码正在尝试索引整数值2017
2018
2018
2015
2015
2015
。在此x['Year']
中,是整数年,例如2018、2019等。
将此更改为
x
这个
dfF['CCRYear'] = dfF['Year'].apply(lambda x: 'True' if x['Year'] == x['MaxSS Year'] else 'False')
dfF['CCRYear'] = dfF['Year'] == dfF['MaxSS Year']