在此df:中
points_made points_conceded
0 0.00 30.00
1 10.00 30.00
如何创建一个"points_expected"列,其中如果有0.00
,列值是max()
行值,如果没有0.00
,则是axis=0
上的mean()
,如下所示:
points_made points_conceded points_expected
0 0.00 30.00 30.00
1 10.00 30.00 20.00
谢谢。
尝试使用NaN
的replace
df['new'] = df.replace(0,np.nan).mean(1)
df
points_made points_conceded new
0 0.0 30.0 30.0
1 10.0 30.0 20.0
import pandas as pd
df = pd.DataFrame({
'points_made': [0, 30],
'points_conceded': [10, 30]
})
def func(row):
if 0 in list(row):
return max(row)
else:
return row.mean()
df['new'] = df.apply(lambda row: func(row), axis=1)
df
退货:
points_made points_conceded new
0 0 10 10.0
1 30 30 30.0