擅长:python、mysql、java
<p>使用<code>melt</code>然后<code>resample('MS')</code></p>
<pre><code>df['Start Date'] = pd.to_datetime(df['Start Date'])
df['End Date'] = pd.to_datetime(df['End Date'])
d1 = pd.melt(
df, ['Demanded', 'Customer'],
['Start Date', 'End Date'],
value_name='Date'
).drop('variable', 1).set_index('Date')
d1.groupby('Customer').apply(lambda df: df.resample('MS').ffill()) \
.reset_index(0, drop=True) \
.reset_index()
Date 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>