当前位置: 首页 > 知识库问答 >
问题:

从DataFrame列标题获取列表

暴英达
2023-03-14

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

例如,如果我得到这样的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']

共有3个答案

商业
2023-03-14

我做了一些快速测试,也许毫不奇怪,使用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

(我仍然非常喜欢列表(数据框),所以谢谢EdChum!)

贺靖
2023-03-14

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

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)
艾雪风
2023-03-14

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

list(my_dataframe.columns.values)

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

list(my_dataframe)
 类似资料:
  • 问题内容: 我想从获取列标题的列表。DataFrame来自用户输入,所以我不知道会有多少列或它们将被称为什么。 例如,如果给我这样的: 我想要一个这样的列表: 问题答案: 你可以执行以下操作以列表形式获取值: 你也可以简单地使用:(如Ed Chum的答案所示):

  • 我定义了一个配置,其中包含每个表的列列表,用作dedup键 例如:配置1: 这些列需要用作重复数据消除键。这个列表是动态的,有些表中有1个值,有些表中有2或3个值 我想做的是从这个列表中建立一个键列 我如何使这个动态的列表适用于任意数量的列。我试过这么做 为了实现这一点,我必须将列表转换为Df,列表中的每个值都需要在单独的列中,我无法理解这一点。 试过这么做但没用 欢迎任何意见,谢谢

  • 我已经生成了<code>pyspark.sql.dataframe。DataFrame带有列名称cast和score。 但是,我想在cast列中保留唯一的名字,而不是与它们相关联的id,与_score列并排。 列中数据类型的结构如下所示 有人可以帮助我如何提取只有演员姓名和分数列的数据。 提前致谢

  • 我将如何从从excel文件创建的Dataframe中提取列与特定值匹配的行? 以下是Dataframe中的几行: 这是我用来读取excel文件的代码,选择我需要的列并适当地重命名它们: 到目前为止,根据诸如这个、这个或这里的答案,我只能返回第一个索引,其中Food=“Total fruit”。当我尝试上述其他方法时,我只得到列名,例如: 我对熊猫不熟悉,看不出哪里出了问题。为什么我可以提取第一行食

  • 我正在创建hivecontext而不是sqlcontext来创建adtaframe 我需要从ratio1中获得确切的配置单元上下文,而不是再次从dataframe中的povidedsql上下文中创建hivecontext,我不知道为什么spark不从dataframe中给我一个hivecontext,它只给SQLContext。

  • 问题内容: 我有一个由列表列表组成的Numpy数组,代表带有行标签和列名的二维数组,如下所示: 我希望所得的DataFrame将Row1和Row2作为索引值,并将Col1,Col2作为标头值 我可以指定索引如下: 但是我不确定如何最好地分配列标题。 问题答案: 您需要指定,并以构造函数,如: 编辑 :如@joris注释中所示,您可能需要更改上述内容才能具有正确的数据类型。