我想从Pandas DataFrame获取列标题的列表。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']
发布于 2013-10-21 05:23:07
您可以通过执行以下操作来获取列表形式的值:
list(my_dataframe.columns.values)
您也可以简单地使用(如Ed Chum's answer中所示):
list(my_dataframe)
发布于 2013-10-21 06:25:16
有一个内置的方法是性能最好的:
my_dataframe.columns.values.tolist()
.columns
返回一个Index
,.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)
发布于 2014-12-02 04:31:57
我做了一些快速测试,也许并不奇怪,使用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)
,所以thanks EdChum!)
https://stackoverflow.com/questions/19482970
复制相似问题