<p>你可以通过旋转得到结果。如果您认为列是一个多索引,那么第二行就不需要了。你知道吗</p>
<p>感谢@ScottBoston提供有关列格式的提示。你知道吗</p>
<pre><code>df = df.pivot('SIGN', 'TYPE', ['TIME', 'ADDITIONAL'])
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
</code></pre>
<hr/>
<p>编辑</p>
<p>在上下文中:</p>
<pre><code>import pandas as pd
data = [
['ABC5245', 10, '2017-01-01 01:52:25.000', '2017-01-01 01:39:04.000'],
['ABC5245', 20, '2017-01-01 01:53:22.000', '2017-01-01 02:39:04.000'],
['DEF1111', 20, '2017-01-01 01:57:00.000', '2017-01-01 03:39:04.000'],
['DEF1111', 10, '2017-01-01 01:55:15.000', '2017-01-01 01:39:04.000'],
['AAA2222', 10, '2017-01-01 01:57:00.000', '2017-01-01 01:39:04.000'],
]
columns = ['SIGN', 'TYPE', 'TIME', 'ADDITIONAL']
df = pd.DataFrame(data=data, columns=columns)
print(df)
df = df.pivot('SIGN', 'TYPE', ['TIME', 'ADDITIONAL'])
df.columns = df.columns.map('{0[0]}_{0[1]}'.format)
print(df)
</code></pre>
<p>输出:</p>
<pre><code> SIGN TYPE TIME ADDITIONAL
0 ABC5245 10 2017-01-01 01:52:25.000 2017-01-01 01:39:04.000
1 ABC5245 20 2017-01-01 01:53:22.000 2017-01-01 02:39:04.000
2 DEF1111 20 2017-01-01 01:57:00.000 2017-01-01 03:39:04.000
3 DEF1111 10 2017-01-01 01:55:15.000 2017-01-01 01:39:04.000
4 AAA2222 10 2017-01-01 01:57:00.000 2017-01-01 01:39:04.000
TIME_10 TIME_20 ADDITIONAL_10 ADDITIONAL_20
SIGN
AAA2222 2017-01-01 01:57:00.000 NaN 2017-01-01 01:39:04.000 NaN
ABC5245 2017-01-01 01:52:25.000 2017-01-01 01:53:22.000 2017-01-01 01:39:04.000 2017-01-01 02:39:04.000
DEF1111 2017-01-01 01:55:15.000 2017-01-01 01:57:00.000 2017-01-01 01:39:04.000 2017-01-01 03:39:04.000
</code></pre>