我们的代码库中都弹出了这两个代码
pandas.DataFrame.columns.values.tolist()
pandas.DataFrame.columns.tolist()
这些总是相同的吗?我不确定为什么 values 变体会在它出现的地方弹出,似乎直接 columns.tolist() 就是获取列名所需的全部内容。如果是这种情况,我希望稍微清理一下代码。
有点内省(introspection)似乎表明值只是一些实现细节是一个 numpy.ndarray
>>> import pandas
>>> d = pandas.DataFrame( { 'a' : [1,2,3], 'b' : [0,1,3]} )
>>> d
a b
0 1 0
1 2 1
2 3 3
>>> type(d.columns)
<class 'pandas.core.indexes.base.Index'>
>>> type(d.columns.values)
<class 'numpy.ndarray'>
>>> type(d.columns.tolist())
<class 'list'>
>>> type(d.columns.values.tolist())
<class 'list'>
>>> d.columns.values
array(['a', 'b'], dtype=object)
>>> d.columns.values.tolist()
['a', 'b']
>>> d.columns
Index(['a', 'b'], dtype='object')
>>> d.columns.tolist()
['a', 'b']
请您参考如下方法:
输出是一样的,但是如果真的很大 df 时间是不同的:
np.random.seed(23)
df = pd.DataFrame(np.random.randint(3, size=(5,10000)))
df.columns = df.columns.astype(str)
print (df)
In [90]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 79.5 µs per loop
In [91]: %timeit df.columns.tolist()
10000 loops, best of 3: 173 µs per loop
还使用了不同的函数:
Index.values与 numpy.ndarray.tolist
谢谢 Mitch另一种解决方案:
In [93]: %timeit list(df.columns.values)
1000 loops, best of 3: 169 µs per loop
