我想从pandas DataFrame中获取列 Headers 列表 . DataFrame将来自用户输入,因此我不知道将会有多少列或将调用它们 .
例如,如果我给这样的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]
17 回答
有一种内置的方法,性能最高:
.columns
返回Index
,.columns.values
返回array
,并且它有一个辅助函数来返回list
.EDIT
对于那些讨厌打字的人来说,这可能是最短的方法:
我觉得问题值得进一步解释 .
正如@fixxxer所指出的,答案取决于您在项目中使用的pandas版本 . 使用
pd.__version__
命令可以获得哪些 .如果你出于某种原因像我一样(在debian jessie上使用0.14.1)使用比0.16.0更旧的熊猫版本,那么你需要使用:
df.keys().tolist()
因为尚未实施df.columns
方法 .这种密钥方法的优点是,它甚至可以在较新版本的熊猫中使用,因此它更具通用性 .
做了一些快速测试,也许不出所料,使用
dataframe.columns.values.tolist()
的内置版本是最快的:(我仍然非常喜欢
list(dataframe)
,所以感谢EdChum!)可以使用索引属性
要在调试器模式下列出数据框的列,请使用列表推导:
顺便说一句,您只需使用
sorted
即可获得排序列表:要快速,整洁,直观地检查,请尝试以下方法:
此解决方案列出了对象my_dataframe的所有列:
DataFrame遵循迭代对象“键”的类似dict的约定 .
创建键/列列表 - 对象方法
to_list()
和pythonic方式DataFrame上的Basic iteration返回列标签
不要将DataFrame转换为列表,只是为了获取列标签 . 在寻找方便的代码示例时不要停止思考 .
它变得更简单(通过熊猫0.16.0):
将在一个很好的列表中提供列名称 .
正如Simeon Visser所回答的......你可以做到
要么
但我认为最大的好处是:
它是明确的,同时不会不必要地长 .
这很有意思,但
df.columns.values.tolist()
几乎比df.columns.tolist()
快3倍但是我认为它们是相同的:在笔记本中
对于IPython笔记本中的数据探索,我首选的方法是:
这将产生易于阅读的按字母顺序排列的列表 .
在代码存储库中
在代码中我发现它更明确
因为它告诉其他人阅读你的代码你在做什么 .
这为我们提供了列表中列的名称:
另一个名为tolist()的函数也可以使用:
那是
my_dataframe.columns
.这应该做到!
您可以通过执行以下操作将值作为列表获取:
你也可以简单地使用: