@srs iloc loc , iloc , ( loc)
import numpy as np
import pandas as pd
N = 10000
df = pd.DataFrame({
'A': np.random.randint(low=1, high=N, size=N),
'B': np.random.randint(low=1, high=N, size=N)
})
%%timeit -n 100
df['C'] = df['A'] * df['B']
df.sort_values(by='C')
: 100 , 3: 1,85
%%timeit -n 100
df.loc[(df.A * df.B).sort_values().index]
loc: 100 , 3: 2,69
%%timeit -n 100
df.iloc[(df.A * df.B).sort_values().index]
iloc: 100 , 3: 2,02
df['C'] = df['A'] * df['B']
df1 = df.sort_values(by='C')
df2 = df.loc[(df.A * df.B).sort_values().index]
df3 = df.iloc[(df.A * df.B).sort_values().index]
print np.array_equal(df1.index, df2.index)
print np.array_equal(df2.index, df3.index)
test results (comparing the entire order of indices) between all parameters:
truth
truth
source
share