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是做什么的? 执行这些语句会产生错误。
答案 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[ ]
选择它们。