<p>将<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.wide_to_long.html" rel="nofollow noreferrer">^{<cd1>}</a>与create <code>ID</code>列一起使用,并将<code>Event1_activity</code>等列名交换到<code>activity_Event1</code>:</p>
<pre><code>df['ID'] = df.pop("ID1").astype(str) + "-" + df.pop("ID2").astype(str))
df.columns = [f'{x[1]}_{x[0]}' if len(x) == 2 else f'{"".join(x)}'
for x in df.columns.str.split('_')]
df = (pd.wide_to_long(df.reset_index(),
stubnames=['Event','activity_Event'],
i=['index','ID'],
j='tmp')
.reset_index(level=1).reset_index(drop=True))
print (df)
ID Event activity_Event
0 10001A-6456 05.09.2019 12:32 Event1_Description
1 10001A-6456 09.09.2019 12:40 Event2_Description
2 10001A-6456 10.09.2019 12:40 Event3_Description
3 10001A-6456 05.09.2019 12:32 Event1_Description
4 10001A-6456 09.09.2019 12:40 Event2_Description
5 10001A-6456 10.09.2019 12:40 Event3_Description
6 20001B-8793 03.09.2019 09:45 Event1_Description
7 20001B-8793 10.09.2019 12:25 Event2_Description
8 20001B-8793 11.09.2019 12:25 Event3_Description
9 20001B-9017 03.09.2019 09:49 Event1_Description
10 20001B-9017 10.09.2019 12:25 Event2_Description
11 20001B-9017 11.09.2019 12:25 Event3_Description
12 20001B-5454 04.09.2019 12:42 Event1_Description
13 20001B-5454 10.09.2019 12:25 Event2_Description
14 20001B-5454 11.09.2019 12:25 Event3_Description
</code></pre>