Ошибка имени, несмотря на то, что она была определена ранее? - PullRequest
0 голосов
/ 09 мая 2020
def categorise_sourceIP(df):
    df_sIPf = pd.df.sourceIP.value_counts()
    df_sIPf['counts'] = np.array(df.sourceIP.value_counts())
    df_sIPf['sourceIP'] = df_sIPf.index
    df_sIPf.reset_index(level=0,inplace=True,drop=True)
    counts_cate = []
    for num in df_sIPf['counts']:
        if num in range(0,21):
            counts_cate.append('<20')
        elif num in range(21,201):
                counts_cate.append('21-200')
        elif num in range(201,401):
            counts_cate.append('201-400')
        elif num > 400:
            counts_cate.append('>400')
counts_cate=df_sIPf['categorised_count']

Ошибка обратного вызова выглядит следующим образом:

NameError                                 Traceback (most recent call last)
<ipython-input-11-9622f76efabe> in <module>
     27         elif num > 400:
     28             counts_cate.append('>400')
---> 29 counts_cate=df_sIPf['categorised_count']

NameError: name 'df_sIPf' is not defined

Как мне это исправить? На ключевом этапе в моей задаче поставили. По сути, это попытка построить взаимосвязь между кластерами двух разных переменных в фрейме данных, чтобы аналогичный фрагмент кода был написан для второго набора.

1 Ответ

2 голосов
/ 09 мая 2020

Вам нужно вернуть df_sIPf из вашей функции, если вы хотите, чтобы она была доступна вне этой функции:

def categorise_sourceIP(df):
    df_sIPf = pd.df.sourceIP.value_counts()
    df_sIPf['counts'] = np.array(df.sourceIP.value_counts())
    df_sIPf['sourceIP'] = df_sIPf.index
    df_sIPf.reset_index(level=0,inplace=True,drop=True)
    counts_cate = []
    for num in df_sIPf['counts']:
        if num in range(0,21):
            counts_cate.append('<20')
        elif num in range(21,201):
                counts_cate.append('21-200')
        elif num in range(201,401):
            counts_cate.append('201-400')
        elif num > 400:
            counts_cate.append('>400')
    return df_sIPf

counts_cate = categorise_sourceIP(df)['categorised_count']
...