我想从数据帧中获取列标题列表。数据帧将来自用户输入,因此我不知道将有多少列或它们将被调用。
例如,如果我得到这样的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']
我做了一些快速测试,也许毫不奇怪,使用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!)
有一种最有效的内置方法:
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的回答所示):
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注释中所示,您可能需要更改上述内容才能具有正确的数据类型。