Python pandas.DataFrame.columns.values.tolist()与pandas.DataFrame.columns.tolist()相同吗
我们的代码库中出现了这两个代码Python pandas.DataFrame.columns.values.tolist()与pandas.DataFrame.columns.tolist()相同吗,python,pandas,Python,Pandas,我们的代码库中出现了这两个代码 pandas.DataFrame.columns.values.tolist() pandas.DataFrame.columns.tolist() 这些总是相同的吗?我不确定为什么会在它出现的地方弹出值变量,看起来像是直接的列。获取列名只需tolist()。如果是这样的话,我希望能稍微整理一下代码 稍微反省一下似乎表明,值只是一个numpy.ndarray的一些实现细节 >>> import pandas >>> d = p
pandas.DataFrame.columns.values.tolist()
pandas.DataFrame.columns.tolist()
这些总是相同的吗?我不确定为什么会在它出现的地方弹出值
变量,看起来像是直接的列。获取列名只需tolist()
。如果是这样的话,我希望能稍微整理一下代码
稍微反省一下似乎表明,值只是一个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']
导入熊猫
>>>数据帧({'a':[1,2,3],'b':[0,1,3]})
>>>d
a b
0 1 0
1 2 1
2 3 3
>>>类型(d列)
>>>类型(d.columns.values)
>>>类型(d.columns.tolist())
>>>类型(d.columns.values.tolist())
>>>d.价值观
数组(['a','b',dtype=object)
>>>d.columns.values.tolist()
['a','b']
>>>d.立柱
索引(['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
还使用不同的功能:
与
感谢您提供另一个解决方案:
In [93]: %timeit list(df.columns.values)
1000 loops, best of 3: 169 µs per loop
或者你可以简单地做
list(d)# it is same with d.columns.tolist()
Out[327]: ['a', 'b']
# Time
% timeit list(df) # after run the time , this is the slowest on my side .
10000 loops, best of 3: 135 µs per loop
很好,我发现这是一个关于如何将列标题获取为列表的问题,看起来在某个点上有一个API简化。
tolist
对于一个索引对象,我可以看到它只调用list(self.values)
,所以这里看到的性能差异就是df.columns.values.tolist()
vslist(df.columns.values)
。我并不一定支持这种解决方案,我只是想指出list(df.columns.values)
完全等同于df.columns.tolist()
。因此,这里的性能差异在于list
内置函数与NumPy数组.tolist()
,后者似乎更快。
list(d)# it is same with d.columns.tolist()
Out[327]: ['a', 'b']
# Time
% timeit list(df) # after run the time , this is the slowest on my side .
10000 loops, best of 3: 135 µs per loop