我想根据几个变量列表对我的数据帧进行子集化,即:
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},'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