我如何将这个被黑客攻击的pandas数据集合在一起?

时间:2016-07-14 21:04:22

标签: python pandas dataframe

如何对第11-13行进行子集?

我有一个pandas数据框,其中包含一些被黑客攻击的数据,而且我最难对第11,12和13行进行子集化。基本上,我想要分隔以“ dunntest ”开头的行并在第5列中使用 TRUE ,然后将它们放入新的数据框中。

          Group         CL          CL1                 CL2        CL3  
0           Min      100.1        100.8               100.9      103.1   
1   1stquartile      100.5        101.1               101.4      103.3   
2        Median      101.6        101.4               101.6      103.4   
3          Mean      101.6        101.7               101.8      103.4   
4   3rdquartile      102.5        102.2               102.1      103.6   
5           Max      103.3        102.9               103.0      103.8   
6            CL        CL1          CL2                 CL3      CLDNA   
7     0.4165119  0.6244998    0.4415880           0.3500000  0.6489307   
8      dunntest       none     CL - CL1   0.469096846266772      FALSE   
9      dunntest       none     CL - CL2   0.378810361841698      FALSE   
10     dunntest       none    CL1 - CL2   0.429085199653927      FALSE   
11     dunntest       none     CL - CL3  0.0173616506762375       TRUE   
12     dunntest       none    CL1 - CL3  0.0382663620796246       TRUE   
13     dunntest       none    CL2 - CL3  0.0436908956580823       TRUE   
14     dunntest       none   CL - CLDNA   0.116215240987058      FALSE   

如果我print(df.loc[:, "Group"]) 我得到了整个数据框的第一列。

当我做print(df.loc[:, "Group" == "dunntest"])

我收到了一个KeyError:KeyError: 'the label [False] is not in the [columns]'

*编辑使用列名称不可靠,因为它们总是不同。

2 个答案:

答案 0 :(得分:4)

您可以尝试boolean indexing

print (df[(df["Group"] == "dunntest") & (df["CL3"] == 'TRUE' )])
       Group    CL        CL1                 CL2   CL3
11  dunntest  none   CL - CL3  0.0173616506762375  TRUE
12  dunntest  none  CL1 - CL3  0.0382663620796246  TRUE
13  dunntest  none  CL2 - CL3  0.0436908956580823  TRUE

如果需要选择5.列使用iloc(python从0计算,那么df.iloc[:,4]):

print (df[(df["Group"] == "dunntest") & (df.iloc[:,4] == 'TRUE' )])
       Group    CL        CL1                 CL2   CL3
11  dunntest  none   CL - CL3  0.0173616506762375  TRUE
12  dunntest  none  CL1 - CL3  0.0382663620796246  TRUE
13  dunntest  none  CL2 - CL3  0.0436908956580823  TRUE

答案 1 :(得分:0)

直接的方法是:

df = df[(df["Group"] == "dunntest") & (df.iloc[4] == 'TRUE' )]