Table of Tribonacci sequence using NumPy and PANDAS
You’re using the wrong tool for the job. Basically, you do all the computation in Python, use numpy for intermediate storage and pandas for display.

Instead, you should compute the list of tribonacci numbers and from there on use pandas for anything else as it would be much more efficient / readable. I’d keep building the tribonacci numbers in Python as I don't know enough pandas to be able to come up with an efficient way that wouldn't involve Dataframe.append and also because it can be expressed very nicely as a generator:

def tribonacci_sequence():
    a, b, c = 0, 1, 1
    yield a
    yield b
    while True:
        yield c
        a, b, c = b, c, a + b + c


You can then select the amount of numbers you like using itertools.islice and give them to a pandas.Dataframe.

From there on, you can easily compute the ratio by shifting the dataframe and dividing element-wise:

def compute_tribonacci(upper_limit, skip_first_rows=3):
    tribonacci = list(islice(tribonacci_sequence(), upper_limit + 1))
    df = pd.DataFrame({'Number sequence': tribonacci})
    df['Ratio'] = df['Number sequence'] / df.shift(1)['Number sequence']
    df.index = df.index.map('Number: {}'.format)
    return df.iloc[skip_first_rows:]


Last thing to do is to actually ask for a certain amount of rows. Full code:

from itertools import islice
import pandas as pd


def tribonacci_sequence():
    a, b, c = 0, 1, 1
    yield a
    yield b
    while True:
        yield c
        a, b, c = b, c, a + b + c


def compute_tribonacci(upper_limit, skip_first_rows=3):
    tribonacci = list(islice(tribonacci_sequence(), upper_limit + 1))
    df = pd.DataFrame({'Number sequence': tribonacci})
    df['Ratio'] = df['Number sequence'] / df.shift(1)['Number sequence']
    df.index = df.index.map('Number: {}'.format)
    return df.iloc[skip_first_rows:]


if __name__ == '__main__':
    df = compute_tribonacci(50)
    print(df)