遇到错误:'float'对象不可下标



如果"SR_NUMBER"与上面的行相同,我创建了一个定义的函数来添加一个月。我收到错误消息:"float"对象不可下标。这是我运行的代码和所需的输出:

数据类型:SR_Number:对象

year_month_end:datetime64[ns]

代码尝试:

def SRfunction(row):
if row['SR_NUMBER'] == row['SR_NUMBER'].shift(1):
return row['year_month_end'] + MonthEnd(1)
else:
return row['year_month_end']
df['SR_NUMBER'] = df['SR_NUMBER'].apply(SRfunction)

错误消息:"float"对象不是可下标的

原始df:


df = pd.DataFrame({'SR_NUMBER':      ['2-15642332176', '3-22596843941', '3-22596843941', '3-22596843941', '3-22596843941'],
'year_month_end': ['2020-02-28', '2020-04-30', '2020-04-30', '2020-04-30', '2020-04-30']})

期望输出:

df = pd.DataFrame({'SR_NUMBER':       ['2-15642332176', '3-22596843941', '3-22596843941', '3-22596843941', '3-22596843941'],
'year_month_end':  ['2020-02-28', '2020-04-30', '2020-05-31', '2020-06-30', '2020-07-31']})

pd.DataFrame.applypd.Series.apply不同。

在这种情况下,row根本不是一行,而是来自SR_NUMBER列的单个float值。

如果应用的函数需要跨多列的数据,则需要使用applyDataFrame形式,但当前使用的是Series形式。

最新更新