从pandas DataFrame列标题获取列表

2024-04-26 20:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pandas数据框中获取列标题的列表。数据框将来自用户输入,因此我不知道将有多少列或它们将被调用。

例如,如果给我一个这样的数据帧:

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

Tags: 数据用户标题dataframepandas列表mylist
3条回答

有一种内置的方法最有效:

my_dataframe.columns.values.tolist()

.columns返回一个索引,.columns.values返回一个数组,这个数组有一个助手函数.tolist返回一个列表。

如果性能对您不那么重要,Index对象定义了一个可以直接调用的.tolist()方法:

my_dataframe.columns.tolist()

性能上的差异是显而易见的:

%timeit df.columns.tolist()
16.7 µs ± 317 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit df.columns.values.tolist()
1.24 µs ± 12.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

对于那些讨厌打字的人,你可以在df上调用list,这样:

list(df)

可以通过执行以下操作以列表形式获取值:

list(my_dataframe.columns.values)

也可以简单地使用:(如Ed Chum's answer所示):

list(my_dataframe)

做了一些快速的测试,也许毫不奇怪使用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),所以谢谢埃德楚!)

相关问题 更多 >