访问Pandas中列表中的DF列

时间:2017-08-02 20:55:23

标签: python list pandas dataframe

我有一个DataFrame列表,我想访问特定DataFrame的一列或多列。 DataFrames(dfs)列表:

[                   
var1       var1  
14.171250  13.593813
13.578317  13.595329
10.301850  13.598456
9.930217   12.682156
6.192517   13.561943
10.89585  13.565149
6.197983   13.572509,  

var1       var2    
2.456183  5.907528
5.052017  5.955731
5.960000  5.972480
8.039317  5.984608
7.559217  5.985348
6.933633  5.979438,

var1       var1  
14.171250  23.593813
23.578317  23.595329
56.301850  23.580139
90.930217  22.365676
89.192517  33.561943
86.23654   53.565149
90.63659   13.572509,  
...]

现在,我想在我的第二个DataFrame中访问var2列。

我尝试了以下内容,

for i, h in enumerate(dfs):
    for col in i[1]:
        colum = col['var2']
print(colum)

以上代码不起作用。如何访问第二个索引DataFrame的var2

1 个答案:

答案 0 :(得分:1)

假设dfs是您的数据框列表。

选项1:直接索引:

var2 = dfs[1]['var2']

选项2:使用df.loc(显式):

var2 = dfs[1].loc[:, 'var2']

选项3:使用df.iloc(基于索引 - 隐式):

var2 = dfs[1].iloc[:, 1]  # assuming `var2` is the second column

您的代码有什么问题?

enumerate在每次迭代时返回一个(index,item)元组。因此,在您的代码中,i是索引,h是元素(数据框)。

for i, h in enumerate(dfs):
    for col in i[1]:
        colum = col['var2']

i[1]会抛出TypeError错误。你需要

for i, h in enumerate(dfs):
    if i == 1:
        column = h['var2']
        break

如果您只需要数据框,则可以放弃循环并使用dfs[1]