<p>df
<a href="https://i.stack.imgur.com/jT6NI.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/jT6NI.png" alt="enter image description here"/></a></p>
<p>您可以创建新的<code>ID</code>,然后连接数据帧子集并按ID排序</p>
<pre><code>df['ID'] = df['ID2'].astype(str) + '-' + df['ID1']
n_events = 3
pd.concat([df[['ID', f'Event{i}', f'Event{i}_activity']].rename(columns={f'Event{i}': 'Event', f'Event{i}_activity': 'Activity'})
for i in range(1, n_events+1)]
).sort_values(by='ID').reset_index(drop=True)
ID Event Activity
0 5454-20001B 04.09.2019 12:42 Event1_Description
1 5454-20001B 10.09.2019 12:25 Event2_Description
2 5454-20001B 11.09.2019 12:25 Event3_Description
3 6456-10001A 05.09.2019 12:32 Event1_Description
4 6456-10001A 05.09.2019 12:32 Event1_Description
5 6456-10001A 09.09.2019 12:40 Event2_Description
6 6456-10001A 09.09.2019 12:40 Event2_Description
7 6456-10001A 10.09.2019 12:40 Event3_Description
8 6456-10001A 10.09.2019 12:40 Event3_Description
9 8793-20001B 03.09.2019 09:45 Event1_Description
10 8793-20001B 10.09.2019 12:25 Event2_Description
11 8793-20001B 11.09.2019 12:25 Event3_Description
12 9017-20001B 03.09.2019 09:49 Event1_Description
13 9017-20001B 10.09.2019 12:25 Event2_Description
14 9017-20001B 11.09.2019 12:25 Event3_Description
</code></pre>
<p>如果必须保留<code>ID</code>的原始顺序,则必须采取不同的方法</p>