python – 带有列表的子集pandas数据帧

我想根据几个变量列表对我的数据帧进行子集化,即:

 list1=[var1,var2,var3]
 list2=[var4,var5,var6]

 data_final = data[list1,list2]

产生了这个错误:

 TypeError: unhashable type: 'list'

如果我提供一个列表,一切正常:

 data_final = data[list1]

以下是最小例子:

dict1 = [{'var0': 0, 'var1': 1, 'var2': 2},
     {'var0': 0, 'var1': 2, 'var2': 4},
    {'var0': 1, 'var1': 5, 'var2': 8},
    {'var0': 1, 'var1': 15, 'var2': 12},]
 df = pd.DataFrame(dict1, index=['s1', 's2','s3','s4'])

  list1=['var0']
  list2=['var1','var2']

这两个命令工作正常:

  df[list1]
  df[list2]

但是这个产生了上面提到的错误:

  df[list1,list2]

最佳答案 这是你期望的输出吗?

df[list1 + list2]
Out[106]: 
    var0  var1  var2
s1     0     1     2
s2     0     2     4
s3     1     5     8
s4     1    15    12
点赞