<p>您应该使用原生python或numpy创建数据结构,并将数据传递给DataFrame构造函数。如果您的函数可以使用numpy的函数/操作编写,那么您可以使用numpy的向量化特性来避免在所有索引上循环。在</p>
<p>下面是一个使用合成函数的示例:</p>
<pre><code>import numpy as np
import pandas as pd
import datetime as dt
import dateutil as du
dates = [dt.date(2017, 1, 1) - du.relativedelta.relativedelta(days=i) for i in range(36500)]
data = np.zeros((36500,36500), dtype=np.uint8)
def my_func(i, j):
return (sum(divmod(i,j)) - sum(divmod(j,i))) % 255
for i in range(1, 36500):
for j in range(1, 36500):
data[i,j] = my_func(i,j)
df = pd.DataFrame(data, columns=dates, index=dates)
df.head(5)
#returns:
2017-08-21 2017-08-20 2017-08-19 2017-08-18 2017-08-17 \
2017-08-21 0 0 0 0 0
2017-08-20 0 0 254 253 252
2017-08-19 0 1 0 0 0
2017-08-18 0 2 0 0 1
2017-08-17 0 3 0 254 0
... 1917-09-19 1917-09-18 1917-09-17 1917-09-16
2017-08-21 ... 0 0 0 0
2017-08-20 ... 225 224 223 222
2017-08-19 ... 114 113 113 112
2017-08-18 ... 77 76 77 76
2017-08-17 ... 60 59 58 57
</code></pre>