我有一個資料框,我必須在長格式和寬格式之間轉換并執行某些計算。
轉換后,我得到了一個資料框,如下所示:
df={'Time':['0', '1', '0', '1','0', '1','0', '1'],
'Parameter':['down_A', 'down_A', 'up_A','up_A','down_A', 'down_A', 'up_A','up_A'],
'NodeA':['2.56', '0.06', '0.14', '1.005','NaN', 'NaN', 'NaN','NaN'],
'NodeB':['NaN', 'NaN','NaN', 'NaN', '1.44', '1.11','0.56','1.98'],}
我想為相同的時間引數對乘以 NodeA 和 NodeB 的值。
我最終想要的輸出是:
df = {'Time':['0', '1', '0', '1'],
'Parameter':['down_A', 'down_A', 'up_A','up_A'],
'NodeA':['2.56', '0.06', '0.14', '1.005'],
'NodeB':['1.44', '1.11','0.56','1.98'],
'Multiplied':['3.6864','0.0666','0.0784','1.9899']}
如何洗掉重復的行并為每個時間引數對保留一行?
uj5u.com熱心網友回復:
首先將值轉換為浮點數,然后聚合firstor sum, min, 'max'..., last multiple columns:
df[['NodeA','NodeB']] = df[['NodeA','NodeB']].astype(float)
df= df.groupby(['Time','Parameter'], as_index=False, sort=False).first()
df['Multiplied'] = df['NodeA'].mul(df['NodeB'])
print (df)
Time Parameter NodeA NodeB Multiplied
0 0 down_A 2.560 1.44 3.6864
1 1 down_A 0.060 1.11 0.0666
2 0 up_A 0.140 0.56 0.0784
3 1 up_A 1.005 1.98 1.9899
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496105.html
