如何将 Pandas DataFrame 列标题获取为列表
Pandas 是用于 Python 数据分析的开源软件包。pandas.DataFrame 是主要的 Pandas 数据结构。它是带有标签轴(行和列)的二维表格数据结构。
我们今天来介绍如何从 DataFrame
对象获取列标题的列表。
我们将在本教程的所有其他代码示例中使用相同的如下面定义的 DataFrame
对象。
>>> import pandas
>>> cities = {
... 'name': ['New York', 'Los Angeles', 'Chicago'],
... 'population': [8601186, 4057841, 2679044],
... 'state': ['NY', 'CA', 'IL'],
... }
>>> data_frame = pandas.DataFrame(cities)
获取 DataFrame
列名的一种方法是迭代 DataFrame
对象本身。DataFrame
迭代器按定义顺序返回列名。
>>> for column in data_frame:
... print(column)
...
name
population
state
当需要将可迭代对象转换为列表时,可以在其上调用 Python 的内置 list
函数。
>>> list(data_frame)
['name', 'population', 'state']
但是,此方法的性能很慢。
>>> from timeit import timeit
>>> timeit(lambda: list(data_frame))
7.818843764999997
我们还可以从 DataFrame.columns
属性访问其列。
>>> list(data_frame.columns)
['name', 'population', 'state']
否则,我们可以使用 DataFrame.columns.tolist()
函数来实现相同的目的。
>>> data_frame.columns.tolist()
['name', 'population', 'state']
这两种方法的性能都不是特别好。
>>> timeit(lambda: list(data_frame.columns))
7.143133517000024
>>> timeit(lambda: data_frame.columns.tolist())
6.064925153999866
遍历 DataFrame.columns.values
属性时,事情发生了很大变化。同样,与 DataFrame
对象和 DataFrame.columns
属性一样,我们可以使用它来获取一系列 DataFrame
列名。
>>> list(data_frame.columns.values)
['name', 'population', 'state']
与以前的方法相比,此方法的性能提高了 5 到 6 倍。
>>> timeit(lambda: list(data_frame.columns.values))
1.301724927000123
但是,如果使用内置 DataFrame.columns.values.tolist()
方法,则可以实现最佳运行时间。
>>> data_frame.columns.values.tolist()
['name', 'population', 'state']
>>> timeit(lambda: data_frame.columns.values.tolist())
0.6860591469999235
如我们所见,这种方法的性能比直接在 DataFrame
对象上进行迭代要好十倍。大多数读者会对这种性能差异背后的原因感到好奇。
答案隐藏在 DataFrame.columns.values
属性的数据类型中。这是一个 NumPy 数组。NumPy 是用于科学计算的 Python 软件包,维护人员会对其性能进行高度优化。
Pandas 构建在 NumPy 之上,并提供了方便的高级抽象。因此,在较低级别的 NumPy 数据结构上执行直接操作几乎总是比在 Pandas 较高级别的数据结构上执行类似操作快。
相关文章
Pandas DataFrame DataFrame.append() 函数
发布时间:2024/04/22 浏览次数:92 分类:Python
-
Pandas 中的 append 方法将两个不同 DataFrame 的行合并,并返回新的 DataFrame。
Pandas DataFrame DataFrame.apply() 函数
发布时间:2024/04/22 浏览次数:172 分类:Python
-
Pandas DataFrame apply()函数将输入的函数应用到 Pandas DataFrame 的每一个沿行或沿列的元素。
Pandas DataFrame DataFrame.aggregate() 函数
发布时间:2024/04/22 浏览次数:98 分类:Python
-
Pandas DataFrame aggregate()函数对 DataFrame 的列或行进行聚合。
Pandas DataFrame DataFrame.to_excel() 函数
发布时间:2024/04/22 浏览次数:68 分类:Python
-
DataFrame.to_excel()函数将 DataFrame 数据转储到 excel 文件中,单张或多张。
Pandas DataFrame DataFrame.sort_values() 函数
发布时间:2024/04/22 浏览次数:70 分类:Python
-
DataFrame sort_values()函数对给定的 DataFrame 按升序或降序进行排序。
Pandas DataFrame DataFrame.set_index() 函数
发布时间:2024/04/22 浏览次数:69 分类:Python
-
Pandas DataFrame 的 set_index 方法用于将列或数组设置为 DataFrame 的索引。
Pandas DataFrame DataFrame.sample() 函数
发布时间:2024/04/22 浏览次数:146 分类:Python
-
Pandas DataFrame sample()函数生成一个 DataFrame 的随机行或列的样本。
Pandas DataFrame DataFrame.reindex() 函数
发布时间:2024/04/22 浏览次数:60 分类:Python
-
Pandas DataFrame reindex()函数可以改变 DataFrame 的行或列的索引。
Pandas DataFrame DataFrame.query() 函数
发布时间:2024/04/22 浏览次数:109 分类:Python
-
DataFrame.query()方法从调用者 DataFrame 中过滤符合特定条件的行。