.loc []和pd.Series.nunique函数

时间:2018-04-27 13:09:09

标签: python pandas dataframe

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 :(得分:0)

pd.Series.nunique将返回系列中的唯一值。 .loc可用于根据数据帧中的索引对数据帧进行切片。

答案 1 :(得分:0)

.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[ ]选择它们。