如何对第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]'
*编辑使用列名称不可靠,因为它们总是不同。
答案 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' )]