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

我目前正使用下面的代码,但是觉得它有点难看,并且想要有一种方法直接使用data frame,我只是想要一个更好的方法。注意:我正在使用python。


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 (使用NaN ):


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



如果你只想创建一个空的数据帧,并在以后用一些传入的数据帧填充它,请尝试以下操作:

在此示例中,我使用这个Pandas文档创建一个新数据帧,然后使用附加来向newDF写入来自oldDF的数据。

看看这个


newDF = pd.DataFrame() #creates a new dataframe that's empty


newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional


# try printing some data from newDF


print newDF.head() #again optional 



  • 如果我必须将新数据从多个newDF中追加到这个oldDFs中,使用for循环来迭代pandas DataFrame append ()

...