Python 在数据框中选择一些列
我有两个包含许多列的数据帧,D1(包含列:V1_1,V1_2…)和D2(包含列:V2_1,V2_2…)。 但我对所有的列都不感兴趣,我只想要其他第三个数据框指示的列。 第三个数据框有两列,第一列是数据框的名称,第二列是包含一些变量名称的列表。 诸如此类:Python 在数据框中选择一些列,python,pandas,dataframe,select,Python,Pandas,Dataframe,Select,我有两个包含许多列的数据帧,D1(包含列:V1_1,V1_2…)和D2(包含列:V2_1,V2_2…)。 但我对所有的列都不感兴趣,我只想要其他第三个数据框指示的列。 第三个数据框有两列,第一列是数据框的名称,第二列是包含一些变量名称的列表。 诸如此类: DataFrame | Vbles D1 | ['V1_1','V1_27','V1_30'] D2 | ['V2_2','V2_3'] 请确认其名称为var_sel,索引为“DataFrame” 现在我想从D
DataFrame | Vbles
D1 | ['V1_1','V1_27','V1_30']
D2 | ['V2_2','V2_3']
请确认其名称为var_sel,索引为“DataFrame”
现在我想从D1中提取var_sel[Vbles][var_sel.index='D1']
中的变量,但我不知道如何提取。
我尝试过:
col=var\u sel[Vbles][var\u sel.index='D1']
col=col[D1]
我得到:
"['V1_1','V1_27','V1_30']"
现在,我想要D1中的列,所以我尝试:
D1[col]
和D1[[col]]
但我有个错误。。。有人能帮帮我吗
谢谢。你的问题不清楚。但如果您希望数据帧D1(单独存储)中的列名称,则可以尝试: D1.1列
如果这不是您想要的,那么给出一段代码可能会有所帮助。以下内容应该可以做到这一点:
col = var_sel.loc['D1', 'Vbles']
D1.loc[:, eval(col)]
问题是,您的列表实际上存储为字符串“['V1\u 1','V1\u 27','V1\u 30']”
“['V1\u 1','V1\u 27','V1\u 30']”。为了能够像列表一样使用它们,我们必须将它们转换为一个列表。我们可以使用eval
eval
基本上将要执行的python代码作为字符串,并返回执行代码返回的任何内容。在我们的示例中,此代码是一个列表文本['V1_1','V1_27','V1_30']
,它返回一个列表
需要注意的是,使用eval可能会很危险,因为正如您所想象的,它会执行您向它抛出的任何东西,因此这可能是一个巨大的安全问题。也就是说,如果您在自己的机器中使用它将一些字符串形式的列表转换为列表形式,这应该不是什么大问题。您能包括在内吗创建数据帧本身的代码?您问题的措辞有点混淆我已经在每个数据帧(D1和D2)中用一个样本做了一些相关分析,然后我将该分析的结果变量保存在这个名为var_sel的数据帧中,其中我为每个数据帧(D1和D2)指出哪些是我想要留下来的变量。后续问题和澄清/代码请求属于评论部分,而不是答案。在你有足够的代表发表评论之前,集中回答不需要更多信息或澄清的问题。评估是一种不鼓励的技巧-有更好的方法提取专栏名称,例如REGlad,它起作用了!并同意@volcano-我在答案中添加了一段关于
eval
不安全性的内容。尽管如此,考虑到作者自己在数据框架中构建了列表,他们可以保证只计算无害的字符串列表。