2016-12-15 2 views
1

У меня есть DataFrame pandas, и когда я выполняю операцию над DataFrame, я возвращаюсь к серии. Как я могу использовать эту серию для выбора только записей, где я нахожу совпадение?Выберите базу данных DataFrame для серийного значения

Прямо сейчас я добавляю столбец в DataFrame и делаю запрос к файловому кадру, а затем удаляю столбец. Мне действительно не нравится это решение, поэтому я надеюсь, что смогу найти лучшее решение.

data = [[1,2,3], [1,3,4], [3,4,5]] 
columns = ['a', 'b', 'c'] 
df = pd.DataFrame(data, columns=columns) 
series = df.myoperation() 
df['myoperation'] = series 
res = df[df['myoperation'] == True] 
del res['myoperation'] 

Объект series будет производить 1-1 матча, так что элемент индекса 1 будет соответствовать элементу 1 в объекте dataframe.

Выше мой взломанный код, чтобы сделать это, но я боюсь, что в DataFrame есть много столбцов или намного больше данных, чем просто этот простой пример, он будет медленным.

Спасибо

ответ

2

Я думаю, что вы можете использовать, если series является булево Series с таким же индексом, как df и такой же длины, как df - это называется boolean indexing:

series = pd.Series([True, False, True], index=df.index) 
res = df[series] 
print (res) 
    a b c 
0 1 2 3 
2 3 4 5 

Он всегда работает с boolean списка и numpy, только длина должна быть такой же, как df:

L = [True, False, True] 
res = df[L] 
print (res) 
    a b c 
0 1 2 3 
2 3 4 5 

arr = np.array([True, False, True]) 
res = df[arr] 
print (res) 
    a b c 
0 1 2 3 
2 3 4 5 
Смежные вопросы