Kuz*_*nbo 2 python indexing pandas
是否有一种令人遗憾的方法来获取数据帧切片中的索引?换句话说,是否有更好的方法来编写以下代码:
df.loc [df ['A']> 5] .index
谢谢!
是的,更好的是仅过滤索引值,而不是所有DataFrame,然后选择索引:
#filter index
df.index[df['A'] >5]
#filter DataFrame
df[df['A'] >5].index
Run Code Online (Sandbox Code Playgroud)
差异在于性能:
np.random.seed(1245)
df = pd.DataFrame({'A':np.random.randint(10, size=1000)})
print (df)
In [40]: %timeit df.index[df['A'] >5]
208 µs ± 11.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [41]: %timeit df[df['A'] >5].index
428 µs ± 6.42 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [42]: %timeit df.loc[df['A'] >5].index
466 µs ± 40.1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Run Code Online (Sandbox Code Playgroud)
如果性能很重要,请使用numpy- 将index和column的值转换values为numpy数组:
In [43]: %timeit df.index.values[df['A'] >5]
157 µs ± 8.71 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
In [44]: %timeit df.index.values[df['A'].values >5]
8.91 µs ± 196 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |