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

时间:2018-11-29 15:29:14

标签: python pandas dataframe

我在脚本中有两种选择数据框特定行的方法:

1。

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

2。

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

从效率角度和python角度(例如,大多数python编码方式是什么),哪种选择特定行的方法是首选?

P.S。另外,我觉得可能还有更多的方法可以达到相同的目的。 P.S.S.我觉得这个问题已经被提出了,但是我找不到。如果重复

请参考

1 个答案:

答案 0 :(得分:3)

它们是不同的。如果您只是在寻找单个值,则df1[(df1['column_x']=='some_value')]很好。 isin的优点是您可以向其传递多个值。例如:df1.loc[df1['column_x'].isin(['some_value', 'another_value'])]

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

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