如何更改数据集(如 Excel 中的数据透视表)

How change dataset (like pivottable in excell)

我将一个 csv 文件导入到 pandas 数据集(phyton)

ParamID EquipmentID SetValue
0 1 Line1 217.0
1 2 Line1 3.0
2 4 Line1 0.0
3 6 Line1 17.0
4 2 Line2 3.0
5 4 Line2 0.0
6 6 Line2 17.0

我想将其更改为另一个 table,我可以在其中看到 difference/Line

ParamID LINE1 LINE2 Difference
0 1:--- 217.0 / 217.0
1 2 3.0 3.0 0
2 4 0.0 0.0 0
3 6 17.0 17.0 0

我试过 pivot1=pd.pivot_table(new_df, index = 'Region') 但这给出了一个错误:“KeyError:'Region'”

关于给定解决方案的其他问题: 如果“Line1”和“Line2”其中第一个 table 中的数字(21 和 22)为什么 df1['Difference'] = (df1['21'].replace(np.nan,0) - df1['22'].replace(np.nan,0)) 在 21

上给出一个 KeyError
df1 = df.pivot('ParamID','EquipmentID','SetValue')
df1['Difference'] = (df1['Line1'].replace(np.nan,0) - df1['Line2'].replace(np.nan,0))
df1

更新完整答案(修改 table):

df1 = df.pivot('ParamID','EquipmentID','SetValue').reset_index()
df1['Difference'] = (df1['Line1'].replace(np.nan,0) - df1['Line2'].replace(np.nan,0))
df1['ParamID'] = np.where((np.isnan(df1.Line1)) | (np.isnan(df1.Line2)), df1['ParamID'].astype(str) + ':---' , df1['ParamID'])
df1.replace(np.nan,0,inplace=True)
df1.columns.name=''

更新问题的答案

新数据:

第 1 步:

df1 = df.pivot('ParamID','EquipmentID','SetValue').reset_index()

第 2 步:

df1['Difference'] = (df1.iloc[:,1].replace(np.nan,0) - df1.iloc[:,2].replace(np.nan,0))
df1['ParamID'] = np.where((np.isnan(df1.iloc[:,1])) | (np.isnan(df1.iloc[:,2])), df1['ParamID'].astype(str) + ':---' , df1['ParamID'])
df1.replace(np.nan,0,inplace=True)
df1.columns.name=''

您可以按如下方式使用.pivot_table()

pivot1 = (df.pivot_table(index='ParamID', 
                         columns='EquipmentID', 
                         values='SetValue', 
                         fill_value=0)
            .reset_index()
            .rename_axis(columns=None)
         )

pivot1['Difference'] = pivot1['Line1'] - pivot1['Line2']

结果:

print(pivot1)

   ParamID  Line1  Line2  Difference
0        1    217      0         217
1        2      3      3           0
2        4      0      0           0
3        6     17     17           0