从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'])