Заменить нули в процентах от нуля в столбце менее 50 - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь создать оценщика. Если процент нулей в одном столбце меньше 50%, тогда замените нули на среднее.

Я перепробовал все, что не могу придумать, но ничего не работает.

i = 0
if (1-((df1.iloc[:, i] == 0).astype(float).sum(axis=0)/df1.iloc[:, i].count())) > 0.5:    
    df1.iloc[:, i] = df1.iloc[:, i].mask(df1.iloc[:, i]==0).fillna(df1.iloc[:, i].mean())              
    i = i+1
else:
    i = i+1
def Zeros(i):
    if (1-((df1.iloc[:, i] == 0).astype(float).sum(axis=0)/df1.iloc[:, i].count())) > 0.5:    
        df1.iloc[:, i] = df1.iloc[:, i].mask(df1.iloc[:, i]==0).fillna(df1.iloc[:, i].mean())              
        i = i+1
    else:
        i = i+1
        return
Zeros(0)

Ответы [ 2 ]

0 голосов
/ 21 октября 2019
exclude = ['c', 'f']

def Zeros(i):
    while i < len(df1.columns):
        if df1.columns[i] in exclude:
            i = i+1
        elif (1-((df1.iloc[:, i] == 0).astype(float).sum(axis=0)/df1.iloc[:, i].count())) > 0.5:    
            df1.iloc[:, i] = df1.iloc[:, i].mask(df1.iloc[:, i]==0).fillna(df1.iloc[:, i].mean())              
            i = i+1
        else:
            i = i+1
    return
Zeros(0)
0 голосов
/ 21 октября 2019

Попробуйте это:

i = 0
if df[i].value_counts()[0] / len(df) < 0.5:
    df.iloc[df['i'] == 0, i] = df[i].mean()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...