我有一个数据列3
,列名称为A ..Z。我还有另一个列表,df1
。如何创建一个仅从原始L1 = [A, D, G, Y]
中选择的A,D,G,Y列的新熊猫数据框df2
?
我尝试了以下方法:
df1
但出现错误
df2 = df1[L1]
如果我尝试类似的东西
"KeyError: None of [Index ([(''A'',),(''D'',) ...<snip>... are in the [columns]"
然后它可以正常工作,即给我df2 = df1[L1[0]]
仅由A列组成。
您知道第一种方法缺少什么吗?手动枚举的第二种方法很繁琐。 谢谢。
答案 0 :(得分:1)
正如我对oppressionslayer的回复所述,我已经从另一个数据帧中的值创建了L1:
df3 = [A, D, G, Y]
看到斯科特·波士顿的答案后,我意识到如果可以代替
,就可以避免麻烦L1 = df3.values.tolist()
我可以做
df2 = df1[df3[0]]
我得到了我想要的子集。
答案 1 :(得分:0)
我认为您在L1中有一个元组列表。
让我们将列表元组解压缩到列列表中,c:
c, _ = zip(*L1)
df2 = df1[c]
答案 2 :(得分:0)
我像您说的那样创建了列,但是我没有看到错误,请问您能显示出与此不同的地方吗?
A B C D E F G H I J K L M N O P Q R S T W X Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
df1[L1]
A D G Y
1 2 5 8 25