熊猫 - 如果为零,则获取最大行值,如果没有零,则获取平均值



在此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

谢谢。

尝试使用NaNreplace

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

相关内容

最新更新