代码
将
melt
和 str.extract
与正则表达式一起使用
tmp1 = df.melt('V1', value_name='I')
pat = r'^\(T=(?P<T>\d+) v2=(?P<V2>\d+)\)$'
tmp2 = tmp1.pop('variable').str.extract(pat).astype('int')
out = pd.concat([tmp1, tmp2], axis=1)[['V1', 'I', 'V2', 'T']]
出
V1 I V2 T
0 1 4 5 27
1 2 5 5 27
2 3 4 5 27
3 4 8 5 27
4 1 5 5 140
5 2 9 5 140
6 3 4 5 140
7 4 12 5 140