我正在寻找从数据框中选择多列的最有效方法:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(4,8), columns = list('abcdefgh'))
我只想选择以下列 a、c、e、f、g 的列,这可以通过使用索引来完成:
df.ix[:,[0,2,4,5,6]]
对于包含许多列的大型数据框,这似乎是一种低效的方法,如果可能的话,我宁愿按范围指定连续的列索引,但尝试如下所示,都会引发语法错误:
df.ix[:,[0,2,4:6]]
或
df.ix[:,[0,2,[4:6]]]
最佳答案
一旦选择了不相邻的列,您将支付负载。
如果您的数据是同质的,回退到 numpy 会给您带来显着的改进。
In [147]: %timeit df[['a','c','e','f','g']]
%timeit df.values[:,[0,2,4,5,6]]
%timeit df.ix[:,[0,2,4,5,6]]
%timeit pd.DataFrame(df.values[:,[0,2,4,5,6]],columns=df.columns[[0,2,4,5,6]])
100 loops, best of 3: 2.67 ms per loop
10000 loops, best of 3: 58.7 µs per loop
1000 loops, best of 3: 1.81 ms per loop
1000 loops, best of 3: 568 µs per loop
关于python - PANDAS 中高效的列索引和选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909107/