擅长:python、mysql、java
<p>您可以先修改数据帧,然后再透视</p>
<pre><code>df.loc[df['Type'] == 'C', 'Result'] = -1
df.loc[(df['Type'].isin(['A', 'B'])) & (df['Result'] < 0.5), 'Result'] = 0
df.loc[(df['Type'].isin(['A', 'B'])) & (df['Result'] >= 0.5), 'Result'] = 1
df.pivot(index = 'ID', columns = 'Measurement', values = ['Result', 'Type'])
Result Type
Measurement ScanA ScanB ScanA ScanB
ID
1 0 1 A A
2 0 -1 B C
</code></pre>
<p>编辑:使用np.选择正如@文本建议的那样</p>
<pre><code>cond = [df['Type'] == 'C', (df['Type'].isin(['A', 'B'])) & (df['Result'] < 0.5), (df['Type'].isin(['A', 'B'])) & (df['Result'] >= 0.5)]
choice = [-1, 0, 1]
df['Result'] = np.select(cond, choice)
df.pivot(index = 'ID', columns = 'Measurement', values = ['Result', 'Type'])
</code></pre>