我想从Pandas 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']

当前回答

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

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_datafframe。columns。

你可以通过以下方式获取值:

list(my_dataframe.columns.values)

你也可以简单地使用(如Ed Chum的回答所示):

list(my_dataframe)

我做了一些快速测试,也许不出意外,使用datafframe .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

(尽管如此,我仍然非常喜欢这个列表(数据框架),所以感谢EdChum!)

在笔记本上

对于IPython笔记本中的数据探索,我的首选方法是:

sorted(df)

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

在代码存储库中

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

df.columns

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

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