Применение функции к кадру данных pandas - PullRequest
0 голосов
/ 08 октября 2018

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

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import time as t
def linear_search(arr, x):
    for i in range(len(arr)): 
        # comparing the array against the given parameter
        if arr[i] == x:
            # Return the parameter if the paramerS is true
            return x

    return -1;

def linear_search_while(arr,x):
    found = -1
    i = 0

    while i < len(arr) and found == -1:
        if arr[i] == x:
            return x
        i = i + 1


    return -1
def binary_search_while(alist, item):
    first = 0
    last = len(alist)-1
    found = -1

    while first<=last and not found:
        midpoint = (first + last)//2
        if alist[midpoint] == item:
            found = item
        else:
            if item < alist[midpoint]:
                last = midpoint-1
            else:
                first = midpoint+1

    return found




def binary_search_rec(arr, x):


    if len(arr) == 0 or (len(arr) == 1 and arr[0]!= x):
        return -1
           mid = arr[len(arr)// 2]


    if x == mid: return x
    if x < mid: return binary_search_rec(arr[:len(arr)// 2], x)
    if x > mid: return binary_search_rec(arr[len(arr)//2+1:], x)


def selectionSort(a):
    len_a = len(a) # getting the length of the array
    for i in range (0,len_a-1):
        minIndex = i 
        for j in range(i+1, len_a): 
           array
            if a[j] < a[minIndex]: 
                minIndex = j
        temp = a[i]
        a[i] = a[minIndex]
        a[minIndex] = temp
    return a  
def timer_Linear_Search(arr, x):
    arr = selectionSort(arr)
    start = t.clock()
    linear_search_while(arr,x)
    stop = t.clock()
    timer = stop - start
    return timer

def timer_Binary_Search(arr, x):
    arr = selectionSort(arr)
    start = t.clock()
    binary_search_while(arr,x)
    stop = t.clock()
    timer = stop - start
    return timer

def timer_Sort(arr):
    start = t.clock()
    selectionSort(arr)
    stop = t.clock()
    timer = stop - start
    return timer
def timer_Linear_S_Search(arr, x):
    start = t.clock()
    arr = selectionSort(arr)
    linear_search_while(arr,x)
    stop = t.clock()
    timer = stop - start
    return timer

def timer_Binary_S_Search(arr, x):
    start = t.clock()
    arr = selectionSort(arr)
    binary_search_while(arr,x)
    stop = t.clock()
    timer = stop - start
    return timer
calculation_df = pd.DataFrame()
calculation_df['Size'] = [512,1024, 2048,4096,8192]

* Я хочу использовать все вышеперечисленные функциитаким образом, что они используют значение v Size и создают случайный массив и число для вычисления остальных столбцов.

[The final data should look something like this][1]

В настоящее время я использую ручной расчет и добавляю данные в фрейм данных. Мой вопрос заключается в том, как применить пользовательскую функцию в коде Python. В настоящее время я вручную добавляю все эти вычисления в фрейм данных *

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете использовать apply метод DataFrame (см. this ):

def linear_search(arr, x):
    for i in range(len(arr)):
        if arr[i] == x:
            return x
    return -1;

df = pd.DataFrame(data=[[1,2],[3,4],[5,6]], columns=["a", "b"])

df.apply(lambda arr: linear_search(arr, 1))

Выход:

a    1
b   -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...