python – 创建一个空的Pandas DataFrame,然后填充它?

我从Pandas Data Frame文档开始:http://pandas.pydata.org/pandas-docs/stable/dsintro.html

我想用一个时间序列类型的计算中的值来迭代填充数据帧。
所以基本上,我想初始化,数据帧与列A,B和时间戳行,所有0或所有NaN。

然后,我将添加初始值,并计算从前一行计算新行的数据,例如row [A] [t] = row [A] [t-1] 1左右。

我目前使用的代码如下,但我觉得这是一种丑陋,必须有一个方法来做这个与数据框架直接或只是一个更好的方式。
注意:我使用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) ]
    dates.sort()

    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
这里有几个建议:

使用date_range索引:

import datetime
import pandas as pd
import numpy as np

todays_date = datetime.datetime.now().date()
index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D')

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

注意:我们可以创建一个空的DataFrame(与NaNs)简单地写:

df_ = pd.DataFrame(index=index, columns=columns)
df_ = df_.fillna(0) # with 0s rather than NaNs

要对数据进行这些类型的计算,请使用numpy数组:

data = np.array([np.arange(10)]*3).T

因此我们可以创建DataFrame:

In [10]: df = pd.DataFrame(data, index=index, columns=columns)

In [11]: df
Out[11]: 
            A  B  C
2012-11-29  0  0  0
2012-11-30  1  1  1
2012-12-01  2  2  2
2012-12-02  3  3  3
2012-12-03  4  4  4
2012-12-04  5  5  5
2012-12-05  6  6  6
2012-12-06  7  7  7
2012-12-07  8  8  8
2012-12-08  9  9  9
http://stackoverflow.com/questions/13784192/creating-an-empty-pandas-dataframe-then-filling-it

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – 创建一个空的Pandas DataFrame,然后填充它?