Python 使用索引从pandas dataframe中子集列

Python 使用索引从pandas dataframe中子集列,python,pandas,subset,Python,Pandas,Subset,我有一个大数据集在一个熊猫数据帧中,我想将其子集,以便进一步操作 例如,我有一个df如下所示: Sample Group AMP ADP ATP 1 A 0.3840396 0.55635504 0.5844648 2 A 0.3971521 0.57851902 -0.24603208 3 A 0.4578926 0.68118957 0.19129746 4

我有一个大数据集在一个熊猫数据帧中,我想将其子集,以便进一步操作

例如,我有一个df如下所示:

Sample  Group   AMP         ADP         ATP
1       A       0.3840396   0.55635504  0.5844648
2       A       0.3971521   0.57851902  -0.24603208
3       A       0.4578926   0.68118957  0.19129746
4       B       0.400222    0.58370811  0.01782915
5       B       0.4110945   0.60208593  -0.6285537
6       B       0.3307011   -0.82615087 -0.25354715
7       C       0.3485679   -0.79597002 -0.17294609
8       C       0.3408411   -0.8090222  0.76138965
9       C       0.3856457   -0.73333568 0.27364299
df2 = df[(df['Group']=='B') & (df['ATP'])]
   Sample Group    ATP
   4      B        0.017829
   5      B       -0.628554
   6      B       -0.253547
假设我想从
df
创建一个新的数据帧
df2
,它只包含B组中的样本和ATP的相应值。我应该可以从索引单独做这件事

我想这样做:

Sample  Group   AMP         ADP         ATP
1       A       0.3840396   0.55635504  0.5844648
2       A       0.3971521   0.57851902  -0.24603208
3       A       0.4578926   0.68118957  0.19129746
4       B       0.400222    0.58370811  0.01782915
5       B       0.4110945   0.60208593  -0.6285537
6       B       0.3307011   -0.82615087 -0.25354715
7       C       0.3485679   -0.79597002 -0.17294609
8       C       0.3408411   -0.8090222  0.76138965
9       C       0.3856457   -0.73333568 0.27364299
df2 = df[(df['Group']=='B') & (df['ATP'])]
   Sample Group    ATP
   4      B        0.017829
   5      B       -0.628554
   6      B       -0.253547
我知道
df['ATP']
显然不是正确的方法。打印
df2
会产生以下结果:

   Sample Group       AMP       ADP       ATP
   4      B           0.400222  0.583708  0.017829
   5      B           0.411094  0.602086 -0.628554
   6      B           0.330701 -0.826151 -0.253547
理想情况下,
df2
将如下所示:

Sample  Group   AMP         ADP         ATP
1       A       0.3840396   0.55635504  0.5844648
2       A       0.3971521   0.57851902  -0.24603208
3       A       0.4578926   0.68118957  0.19129746
4       B       0.400222    0.58370811  0.01782915
5       B       0.4110945   0.60208593  -0.6285537
6       B       0.3307011   -0.82615087 -0.25354715
7       C       0.3485679   -0.79597002 -0.17294609
8       C       0.3408411   -0.8090222  0.76138965
9       C       0.3856457   -0.73333568 0.27364299
df2 = df[(df['Group']=='B') & (df['ATP'])]
   Sample Group    ATP
   4      B        0.017829
   5      B       -0.628554
   6      B       -0.253547
有没有一种方法可以做到这一点,而不必求助于一些复杂的循环或只是手动删除不需要的列及其值


谢谢

啊,这太棒了!我假设这段代码只是在逗号后传递所需列的索引。我知道会有一个简单的解决办法。非常感谢。
df2 = df.loc[df['Group'] == 'B', ['Sample', 'Group', 'ATP']]