在python pandas数据帧中选择列的最佳方法

Best way to select columns in python pandas dataframe

本问题已经有最佳答案,请猛点这里访问。

我的脚本中有两种方法:如何从数据帧中选择特定行:

1。

1
df2 = df1[(df1['column_x']=='some_value')]

2。

1
df2 = df1.loc[df1['column_x'].isin(['some_value'])]

从效率的角度来看,从pythonic的角度来看(比如说,大多数的python编码方式是什么),选择特定行的方法是首选的?

另外,我觉得有更多的方法可以达到同样的效果。另外,我觉得这个问题已经被问到了,但我找不到。如有重复请参考


它们是不同的。如果你只是在寻找一个值,那么df1[(df1['column_x']=='some_value')]就可以了。isin的优点是可以传递多个值。例如:df1.loc[df1['column_x'].isin(['some_value', 'another_value'])]

有趣的是,从性能角度来看,第一种方法(使用==)实际上比第二种方法(使用isin)慢得多:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import timeit

df = pd.DataFrame({'x':np.random.choice(['a','b','c'],10000)})

def method1(df = df):
    return df[df['x'] == 'b']

def method2(df=df):
    return df[df['x'].isin(['b'])]

>>> timeit.timeit(method1,number=1000)/1000
0.001710233046906069
>>> timeit.timeit(method2,number=1000)/1000
0.0008507879299577325