怎样创建一个空的Panda 的DataFrame,然后填充它?

从关于Panda 的Data Frame文章开始: http://pandas.pydata.org/pandas-docs/stable/dsintro.html

我想用一种时间序列的计算方法迭代填充数据框。所以基本上,我希望用列A、B和时间戳行初始化数据框,全部设为为0或NaN。

然后,我将添加初始值,并从该行中计算出的新行,比如行[A][t]= 行[A][t-1]+ 1]。

我现在使用的代码如下所示,虽然代码不太好看,但总是需要有一种方法可以直接或一般性的用data frame。注意:我使用的是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
数据科学家 Level1 提问 在 2017-12-05 在 应用问题.
添加评论
1 答案
最佳答案
以下是我的一些建议:

使用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
数据科学家 Level2 回答于 在 2017-12-17。
添加评论

您的回答

*代码插入功能已上线
发布您的回答,意味着您同意了我们的 隐私政策服务条款