python获取列名 - spark dataframe获取列名




从pandas DataFrame列标题中获取列表 (10)

我想从pandas DataFrame中获取列标题的列表。 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]

在笔记本中

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

sorted(df)

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

在代码库中

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

df.columns

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


做了一些快速测试,也许毫不奇怪,使用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)框),所以非常感谢EdChum!)


它变得更简单(熊猫0.16.0):

df.columns.tolist()

会给你列好的列名。


您可以通过执行以下操作来获取列表中的值:

list(my_dataframe.columns.values)

你也可以简单地使用:

list(my_dataframe)

最简单的方法是:

list(my_dataframe.columns)

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

my_dataframe.columns.values.tolist()

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

编辑

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

list(df)

这很有趣,但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

这是可用的my_dataframe.columns


[column for column in my_dataframe]

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


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




dataframe