Dip*_*man 5 python function pandas
这是我的代码:
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'])
Run Code Online (Sandbox Code Playgroud)
如何让此代码运行而不会出错?我希望该函数仅应用于所有行的数据框的“年份”列,并将输出存储在同一数据框的名为“nv”的新列上。
需要apply自定义函数:
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
Run Code Online (Sandbox Code Playgroud)
更好的是mask用于按条件更改值:
dfnew['nv']= dfnew['year'].mask(dfnew['year'] == 2016, dfnew['year'] * 2 * 2)
print (dfnew)
day month year nv
0 25 10 2015 2015
1 31 12 2016 8064
Run Code Online (Sandbox Code Playgroud)
细节:
print (dfnew['year'] == 2016)
0 False
1 True
Name: year, dtype: bool
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6019 次 |
| 最近记录: |