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

当前回答

我觉得这个问题值得再解释一下。

正如fixxer所指出的,答案取决于您在项目中使用的Pandas版本。这可以通过pd得到。__version__命令。

如果你出于某种原因像我一样(在Debian 8 (Jessie)上我使用0.14.1)使用比0.16.0更老的Pandas版本,那么你需要使用:

df.keys().tolist()因为没有任何df.keys。Columns方法尚未实现。

这个keys方法的优点是,它甚至可以在更新版本的Pandas中工作,因此更加通用。

其他回答

DataFrame遵循类似字典的约定,即遍历对象的“键”。

my_dataframe.keys()

创建一个键/列列表-对象方法to_list()和Pythonic方法:

my_dataframe.keys().to_list()
list(my_dataframe.keys())

DataFrame的基本迭代返回列标签:

[column for column in my_dataframe]

不要将DataFrame转换为列表,只是为了获得列标签。在寻找方便的代码示例时,不要停止思考。

xlarge = pd.DataFrame(np.arange(100000000).reshape(10000,10000))
list(xlarge) # Compute time and memory consumption depend on dataframe size - O(N)
list(xlarge.keys()) # Constant time operation - O(1)

为了快速,简洁,直观的检查,试试这个:

for col in df.columns:
    print col

这是达到目标最简单的方法。

my_dataframe.columns.values.tolist ()

如果你很懒,试试这个>

列表(my_dataframe)

它的简单代码为您:

for i in my_dataframe:
    print(i)

尽管去做

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

list(my_dataframe.columns.values)

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

list(my_dataframe)