0 votes
1 view
in Machine Learning by (17.4k points)

I'm starting from the pandas DataFrame docs here: http://pandas.pydata.org/pandas-docs/stable/dsintro.html

I'd like to iteratively fill the DataFrame with values in a time series kind of calculation. So basically, I'd like to initialize the DataFrame with columns A, B and timestamp rows, all 0 or all NaN.

I'd then add initial values and go over this data calculating the new row from the row before, say row[A][t] = row[A][t-1]+1 or so.

I'm currently using the code below, but I feel it's kind of ugly and there must be a way to do this with a DataFrame directly or just a better way in general. Note: I'm using Python 2.7.

import datetime as dt

import pandas as pd

import scipy as s

if __name__ == '__main__':

    base = dt.datetime.today().date()

    dates = [ base - dt.timedelta(days=x) for x in range(0,10) ]


    valdict = {}

    symbols = ['A','B', 'C']

    for symb in symbols:

        valdict[symb] = pd.Series( s.zeros( len(dates)), dates )

    for thedate in dates:

        if thedate > dates[0]:

            for symb in valdict:

                valdict[symb][thedate] = 1+valdict[symb][thedate - dt.timedelta(days=1)]

    print valdict

1 Answer

0 votes
by (33.2k points)

You can simply use pandas.DataFrame() method:

To create an empty dataframe:

import pandas as pd 

Newdf = pd.DataFrame()

The above will create an empty dataframe of the Newdf variable.

To write the previous dataframe into a new one:

NewDF = NewDF.append(OldDF)


OldDF is the name of the previous dataframe, which you want to append in a new dataframe.

In the above code .head() method will print the first five rows of the dataframe.

Hope this answer helps.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !