一種方法可以是: 首先,使用Series.isin只從df中選擇列Metric中有High和Low的行。 接下來,使用df.pivot重新塑造df和assign的新列Volume,其中包含列df中的值從列High中減去的結果(請參見:Series.sub)。 最后,我們添加了一些修飾性更改:我們drop列High和Low,重置索引(請參見:df.reset_index),并刪除df.columns.name(在df.pivot期間自動設置為Metric)。 import pandas as pdimport numpy as npdata = {'Date': {0: '2020-01-01', 1: '2020-01-01', 2: '2020-01-01', 3: '2020-01-02', 4: '2020-01-02', 5: '2020-01-02'}, 'Metric': {0: 'Low', 1: 'High', 2: 'Open', 3: 'Low', 4: 'High', 5: 'Open'}, 'Value': {0: 34.5, 1: 36.5, 2: 23.5, 3: 32.5, 4: 38.95, 5: 32.5}}df = pd.DataFrame(data)res = df[df.Metric.isin(['Low','High'])].pivot(i