<p>我不能百分之百地确定我理解您想要什么,但是我认为您想要为<code>datelist</code>中的每个日期创建一个子数据帧(取自<code>number</code>数据帧)。所以在你的例子中,你想要创建7个数据帧?在</p>
<p>如果是这样,我会这样做:</p>
<p>首先将<code>number</code>(我称之为df)中的<code>date</code>列和{<cd2>}列转换为<code>datetime64</code>列。我假设<code>numbers</code>中的日期列已经是<code>datetime64</code>类型:</p>
<pre><code>print df
date group number
0 2013-02-01 group1 -0.098765
1 2013-02-02 group2 0.519878
2 2013-02-03 group1 -0.098765
3 2013-02-04 group3 1.960784
4 2013-02-05 group3 2.859412
5 2013-02-06 group2 1.960784
6 2013-02-07 group1 -0.696594
</code></pre>
<p>在<code>datelist</code>中,我将创建一个<code>datetime64</code>类型的新列(注意,我更改了datelist中的日期,因此<code>number</code>数据帧中的所有<code>dates</code>都小于{<cd2>}中的所有日期,并且我让<code>datelist</code>具有更少的观察值以减小输出的大小):</p>
^{pr2}$
<p>现在,我只循环datelist的行,并在<code>date <= end</code>的行中创建一个新的数据帧:</p>
<pre><code>pieces = []
for idx,rows in datelist[['end']].iterrows():
x = df[df['date'] <= rows['end']]
x['end'] = rows['end']
pieces.append(x)
print pd.concat(pieces,ignore_index=True)
date group number end
0 2013-02-01 group1 -0.098765 2013-02-03
1 2013-02-02 group2 0.519878 2013-02-03
2 2013-02-03 group1 -0.098765 2013-02-03
3 2013-02-01 group1 -0.098765 2013-02-06
4 2013-02-02 group2 0.519878 2013-02-06
5 2013-02-03 group1 -0.098765 2013-02-06
6 2013-02-04 group3 1.960784 2013-02-06
7 2013-02-05 group3 2.859412 2013-02-06
8 2013-02-06 group2 1.960784 2013-02-06
9 2013-02-01 group1 -0.098765 2013-03-06
10 2013-02-02 group2 0.519878 2013-03-06
11 2013-02-03 group1 -0.098765 2013-03-06
12 2013-02-04 group3 1.960784 2013-03-06
13 2013-02-05 group3 2.859412 2013-03-06
14 2013-02-06 group2 1.960784 2013-03-06
15 2013-02-07 group1 -0.696594 2013-03-06
16 2013-02-01 group1 -0.098765 2013-03-08
17 2013-02-02 group2 0.519878 2013-03-08
18 2013-02-03 group1 -0.098765 2013-03-08
19 2013-02-04 group3 1.960784 2013-03-08
20 2013-02-05 group3 2.859412 2013-03-08
21 2013-02-06 group2 1.960784 2013-03-08
22 2013-02-07 group1 -0.696594 2013-03-08
</code></pre>
<p>我连接了数据帧,但您可以通过在“end”上执行groupby来处理它们。在</p>