<p>尝试使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.sort_values.html#pandas-series-sort-values" rel="nofollow noreferrer">^{<cd1>}</a>+<a href="https://pandas.pydata.org/docs/reference/api/pandas.core.groupby.GroupBy.cumcount.html#pandas-core-groupby-groupby-cumcount" rel="nofollow noreferrer">^{<cd2>}</a>创建指示符<code>seq</code>,然后使用<code>seq</code>作为列和<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.add_prefix.html#pandas-dataframe-add-prefix" rel="nofollow noreferrer">^{<cd6>}</a>创建<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot.html#pandas-dataframe-pivot" rel="nofollow noreferrer">^{<cd4>}</a>,并清理索引和轴:</p>
<pre><code>df['seq'] = df['age'].sort_values().groupby(df['subj']).cumcount() + 1
new_df = (
df.pivot(index='subj', columns='seq', values='score')
.add_prefix('score_time')
.reset_index()
.rename_axis(columns=None)
)
</code></pre>
<p>或者通过<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.pivot_table.html#pandas-pivot-table" rel="nofollow noreferrer">^{<cd7>}</a>在不影响^{<cd8>的情况下动态使用series:</p>
<pre><code>new_df = (
df.pivot_table(index='subj',
columns=df['age'].sort_values().groupby(df['subj']).cumcount() + 1,
values='score')
.add_prefix('score_time')
.reset_index()
.rename_axis(columns=None)
)
</code></pre>
<p><code>new_df</code>:</p>
<pre><code> subj score_time1 score_time2
0 subj1 2 1
1 subj2 5 2
2 subj3 3 5
</code></pre>