从pandasDataFrame列标题获取列表

我想获得一个pandasDataFrame列标题的列表。 DataFrame将来自用户input,所以我不知道会有多less列或将被调用。

例如,如果我这样给一个DataFrame:

>>> my_dataframe y gdp cap 0 1 2 5 1 2 3 9 2 8 7 2 3 3 4 7 4 6 7 7 5 4 8 3 6 8 2 8 7 9 9 10 8 6 6 4 9 10 10 7 

我想要得到这样的列表:

 >>> header_list [y, gdp, cap] 

您可以通过执行以下列表来获取值:

 list(my_dataframe.columns.values) 

你也可以简单地使用:

 list(my_dataframe) 

有一个内置的方法是最高性能的:

 my_dataframe.columns.values.tolist() 

.columns返回一个Index.columns.values返回一个array并且有一个辅助函数返回一个list

编辑

对于那些讨厌打字的人来说,这可能是最短的方法:

 list(df) 

做了一些快速testing,也许毫不奇怪,使用dataframe.columns.values.tolist()的内置版本是最快的:

 In [1]: %timeit [column for column in df] 1000 loops, best of 3: 81.6 µs per loop In [2]: %timeit df.columns.values.tolist() 10000 loops, best of 3: 16.1 µs per loop In [3]: %timeit list(df) 10000 loops, best of 3: 44.9 µs per loop In [4]: % timeit list(df.columns.values) 10000 loops, best of 3: 38.4 µs per loop 

(虽然我仍然非常喜欢list(dataframe) dataframe),所以谢谢EdChum!)

它变得更简单(pandas0.16.0):

 df.columns.tolist() 

会给你一个不错的列表中的列名称。

 >>> list(my_dataframe) ['y', 'gdp', 'cap'] 

要在debugging器模式下列出dataframe的列,请使用列表parsing:

 >>> [c for c in my_dataframe] ['y', 'gdp', 'cap'] 

这是可用的my_dataframe.columns

这很有趣,但df.columns.values.tolist()几乎比df.columns.values.tolist()快3倍,但我认为它们是相同的:

 In [97]: %timeit df.columns.values.tolist() 100000 loops, best of 3: 2.97 µs per loop In [98]: %timeit df.columns.tolist() 10000 loops, best of 3: 9.67 µs per loop 
 [column for column in my_dataframe] 

pandas文档 :对数据框的迭代返回列标签

在笔记本

对于IPython笔记本中的数据探索,我最喜欢的方式是:

 sorted(df) 

这将产生一个容易阅读的字母顺序列表。

在代码库中

在代码中,我发现它更明确的做

 df.columns 

因为它告诉其他人阅读你的代码你在做什么。

最简单的方法是:

 list(my_dataframe.columns) 
 n = [] for i in my_dataframe.columns: n.append(i) print n 

可以使用索引属性

 df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)}, index=['a', 'b', 'c'])