2016-06-06 1 views
0

У меня есть кадр данных, который можно сказать «df». Теперь один из столбцов фрейма данных называется «itemID». Я хотел бы узнать, как очень быстрый индекс строки в соответствии со значением в столбце «itemID».Pandas Data Frame найти индекс в соответствии со значением столбца

Когда я делаю:

df[df['itemID']==X] 

Производительность довольно медленно.

Есть ли способ создать что-то вроде хеш-индекса, чтобы сделать выше?

+0

Как вы думаете, 'ДФ [ДФ [ 'Itemid'] == X]'? – jezrael

+0

Я предполагаю, что вы имеете в виду 'df [df ['itemID'] == x]' вы можете объяснить, насколько велики и сложны ваши df, связанные с 'dtypes', любые отсутствующие значения и насколько быстро вы требуете здесь? – EdChum

+0

My df содержит строки 3.2M. ItemID - целое число. В df также содержатся некоторые другие столбцы. – nikosdi

ответ

1

Я считаю, вы можете использовать dask.

Docs говорят:

Следующий класс вычислений хорошо работает:

Тривиально параллелизуемые операции (быстро):

строчном выбор: ДФ [df.x> 0 ]

Вы также можете проверить, как Create Dask DataFrames.

Пример

import pandas as pd 
import dask.dataframe as dd 

df = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 
        'itemID': [1,2,4,4]}) 

print (df) 
    A itemID 
0 A0  1 
1 A1  2 
2 A2  4 
3 A3  4 

#Construct a dask objects from a pandas objects 
df_dask = dd.from_pandas(df, npartitions=3) 

#Row-wise selections 
print (df_dask[df_dask.itemID == 4].compute()) 
    A itemID 
2 A2  4 
3 A3  4 
+0

прохладный. не знал dask, но это поможет некоторым моим кодам точно. – philshem