从列表中的名称中选择数据框列

时间:2019-12-19 21:17:14

标签: python pandas

我有一个数据列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列组成。

您知道第一种方法缺少什么吗?手动枚举的第二种方法很繁琐。 谢谢。

3 个答案:

答案 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