pandas datafram上的用户定义函数

2024-04-19 22:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

dfnew=pd.DataFrame({ 'year': [2015,2016],
                      'month': [10, 12],
                      'day': [25,31]}) 
print(dfnew)

def calc(yy,n):

    if yy==2016:
        return yy*2*n
    else: 
        return yy

dfnew['nv']=map(calc, dfnew['year'],2)    
print(dfnew['nv'])

我怎样才能让这段代码正常运行?我希望函数只应用于dataframe中所有行的“Year”列,并将输出存储在同一dataframe的名为“nv”的新列上。在


Tags: 代码dataframereturnifdefcalcyearpd
2条回答

自定义函数需要^{}

dfnew['nv']= dfnew['year'].apply(lambda x: calc(x, 2))
print (dfnew)
   day  month  year    nv
0   25     10  2015  2015
1   31     12  2016  8064

更好的方法是使用^{}按条件更改值:

^{2}$

详细信息:

print (dfnew['year'] == 2016)
0    False
1     True
Name: year, dtype: bool

非常感谢你的及时答复。你对我问题的回答很有帮助。在

除此之外,我还需要向函数传递多个列名,这就是我所做的。在

def yearCalc(year,month,n):
    if year == 2016:
        print("year:{} month:{}".format(year, month))
        return year * month * n
    else: 
        return year

df['nv']= df[['year' ,'month']].apply(lambda x: yearCalc(x['year'],x['month'],2),axis=1)

非常感谢。在

相关问题 更多 >