如果"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.apply
与pd.Series.apply
不同。
在这种情况下,row
根本不是一行,而是来自SR_NUMBER
列的单个float
值。
如果应用的函数需要跨多列的数据,则需要使用apply
的DataFrame
形式,但当前使用的是Series
形式。