根据列表内容从数据框中选择列

时间:2017-09-18 16:34:31

标签: python pandas

我的数据框df如下所示:

      record_id  month    day   year   plot species    sex    wgt
0         False  False  False  False  False    True  False   True
1         False  False  False  False  False    True  False   True
2         False  False  False  False  False   False  False   True
3         False  False  False  False  False   False  False   True
4         False  False  False  False  False   False  False   True
5         False  False  False  False  False   False  False   True
6         False  False  False  False  False   False  False   True
7         False  False  False  False  False   False  False   True
8         False  False  False  False  False   False  False   True
9         False  False  False  False  False   False  False   True
10        False  False  False  False  False   False  False   True
11        False  False  False  False  False   False  False   True

我有一个名为list的列表,其中包含df中标题的子集,如下所示:[month,plot,sex]

是否有办法将list应用于数据框,因此只有列表中数据框中的列才会返回到新的数据框。所以新数据框看起来像:

          month   plot    sex
0         False  False  False
1         False  False  False
2         False  False  False
3         False  False  False
4         False  False  False
5         False  False  False
6         False  False  False
7         False  False  False
8         False  False  False
9         False  False  False
10        False  False  False
11        False  False  False

我试过df1= df[list]但没有成功。

3 个答案:

答案 0 :(得分:3)

使用isin

df.loc[:,df.columns.isin(['month','plot','sex'])]
Out[165]: 
    month   plot    sex
0   False  False  False
1   False  False  False
2   False  False  False
3   False  False  False
4   False  False  False
5   False  False  False
6   False  False  False
7   False  False  False
8   False  False  False
9   False  False  False
10  False  False  False
11  False  False  False

答案 1 :(得分:1)

IIUC:

l = ['month','plot','sex']

df[l]

输出:

    month   plot    sex
0   False  False  False
1   False  False  False
2   False  False  False
3   False  False  False
4   False  False  False
5   False  False  False
6   False  False  False
7   False  False  False
8   False  False  False
9   False  False  False
10  False  False  False
11  False  False  False

答案 2 :(得分:0)

List是内置的,如果您尝试访问基于内置的df,如df[list]将返回整个数据帧。不建议将任何值赋给builtins。因此,上面的答案建议将列表存储在不同的变量名称中,然后尝试进行索引。

df[list].head(4)
   record_id  month    day   year   plot  species    sex   wgt
0      False  False  False  False  False     True  False  True
1      False  False  False  False  False     True  False  True
2      False  False  False  False  False    False  False  True
3      False  False  False  False  False    False  False  True

如果k = ['record_id','month'],则df[k]将返回

  record_id  month
0      False  False
1      False  False
2      False  False
3      False  False
.
.