我在脚本中有两种选择数据框特定行的方法:
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.我觉得这个问题已经被提出了,但是我找不到。如果重复
请参考答案 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