<p>可以首先转换日期为<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html" rel="nofollow noreferrer">^{<cd1>}</a>的列。然后使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.itertuples.html" rel="nofollow noreferrer">^{<cd2>}</a>和<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.html" rel="nofollow noreferrer">^{<cd3>}</a>以及频率<code>MS</code>(月初)和<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html" rel="nofollow noreferrer">^{<cd5>}</a>来创建新的扩展<code>DataFrame</code>。最后<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.join.html" rel="nofollow noreferrer">^{<cd7>}</a>原始列<code>Quantity Demanded</code>和<code>Customer</code>:</p>
<pre><code>df['Start_Date'] = pd.to_datetime(df['Start Date'])
df['End_Date'] = pd.to_datetime(df['End Date'])
df1 = pd.concat([pd.Series(r.Index,
pd.date_range(r.Start_Date, r.End_Date, freq='MS'))
for r in df.itertuples()])
.reset_index()
df1.columns = ['Month','idx']
print (df1)
Month idx
0 2017-01-01 0
1 2017-02-01 0
2 2017-03-01 0
3 2017-02-01 1
4 2017-03-01 1
df2 = df1.set_index('idx').join(df[['Quantity Demanded','Customer']]).reset_index(drop=True)
print (df2)
Month Quantity Demanded Customer
0 2017-01-01 100 A
1 2017-02-01 100 A
2 2017-03-01 100 A
3 2017-02-01 50 B
4 2017-03-01 50 B
</code></pre>