Функции .loc [] и pd.Series.nunique - PullRequest
0 голосов
/ 27 апреля 2018
df_all = pd.DataFrame.from_records(features_all)
df_all = df_all.loc[:,df_all.apply(pd.Series.nunique) != 1]

df_benign = df_all.loc[df_all['Y'] == 1]
df_Malw = df_all.loc[df_all['Y'] == 0]

Я просматривал код и сталкивался с этими утверждениями. Я не могу понять, что делают .loc и pd.Series.nunique? Выполнение этих операторов дает ошибку.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

.loc - это функция индексации. Вы используете его для доступа к строкам ваших данных по метке индекса. Например, если вы создаете фрейм данных с индексом ['a', 'b', 'c'] и хотите получить доступ к строке с меткой 'a', вы можете использовать .loc:

> import pandas as pd
> import numpy as np
> df = pd.DataFrame(np.random.random((3,4)), columns=list('1234'), 
index=list('abc'))
> df
          1         2         3         4
a  0.197580  0.992679  0.258636  0.750934
b  0.668819  0.452229  0.498106  0.424484
c  0.534395  0.951544  0.222347  0.807361
> df.loc['a']
1    0.197580
2    0.992679
3    0.258636
4    0.750934

Вы также можете использовать .loc для индексирования ряда элементов, таких как df.loc['a':'c'], но в вашем коде кажется, что вы оба пытаетесь проиндексировать строку и столбец в этой строке:

df_all = df_all.loc[:,df_all.apply(pd.Series.nunique) != 1]

В этой строке вы можете попробовать использовать .ix. Для двух других строк:

df_benign = df_all.loc[df_all['Y'] == 1]
df_Malw = df_all.loc[df_all['Y'] == 0]

Вы найдете все строки, где df_all['Y'] == 1, и выделите их с помощью df_all.loc[ ].

0 голосов
/ 27 апреля 2018

pd.Series.nunique вернет уникальные значения в серии. .loc может использоваться для нарезки кадра данных на основе индекса в кадре данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...