擅长:python、mysql、java
<p>我认为不为每个组执行<code>part_df.index = pd.DatetimeIndex(part_df.date)</code>,而是在整个数据帧级别执行,可以节省一些时间。然后只对“points”列执行<code>groupby</code>,同时执行几个操作,而不是重新分配<code>df</code>。整个操作是:</p>
<pre><code>df = pd.DataFrame(lines, columns=columns)
df = (df.set_index(pd.to_datetime(df.date))
.groupby(['name', 'account'])['points'].apply(lambda x: x.reindex(dates).ffill())
.dropna().reset_index().rename(columns={'level_2':'date'}))
</code></pre>
<p>你会得到同样的结果。不确定对大数据集的改进有多大,但在您给出的示例中,该改进大约快了2.4倍。这可能取决于您拥有的组数和<code>dates</code>的长度</p>