ich habe ein großes df, wo insg. 62 sich wiederholende physikalische Parameter enthalten sind. Die Einheiten dieser sind allerdings nur sechs und ich suche gerade nach einer klugen Methode, wie ich die Größen den Einheiten zuordnen kann, ohne, dass ich jede manuell durchgucken muss.
np.unique(df["dataobjectname"])
array(['A_phsA', 'A_phsB', 'A_phsC', 'AbsReactPh1', 'AbsReactPh2',
'AbsReactPh3', 'AgeRte', 'AirMstLTCWrn', 'AirMstTnkWrn', 'BotTmp',
'CurStGr1', 'CurStGr2', 'DfAlg', 'DfFail', 'DvDfPh1',
'DvDfPh2', 'DvDfPh3', 'EndPosL', 'EndPosR', 'EnvTmp', 'FuncMon',
'GasInsAlm', 'GasInsTr', 'HPTmpClc', 'LTCBlk',
'LTCTmp', 'Loc', 'MDSIR', 'MDSIRFc', 'MOLTC', 'MOLTCFc', 'MOLTCR',
'MOLTCRFc', 'MOilSmp', 'MSelIns', 'MSelInsFc', 'MotCon', 'MotDrv',
'MotPro', 'OilLvH2LTC', 'OilLvH2PTR', 'OilLvL2LTC', 'OilLvL2PTR',
'OpCntRs', 'PPV_phsAB', 'PPV_phsBC', 'PPV_phsCA', 'PhyHealth',
'PresVlvStLTC', 'PresVlvStPTR', 'ProRly', 'ReactAlg', 'ReactFail',
'ReactPh1', 'ReactPh2', 'ReactPh3', 'RlAgeRte', 'SetActErrGr1',
'SetActErrGr2', 'TapOpErr', 'TapPos', 'TopTmp'], dtype=object)
df["unit"].value_counts()
Ampere 12708606
PartsPerMillion 922259
Farad 663434
Volt 608920
Percent 497151
Celsius 284124
Name: unit, dtype: int64
Die Größen kriege ich ja relativ leicht durchdf
deviceid dataobjectname aggregation timestamp assetname charttype datatype folderid qualityratio unit value
1127536 BM11012 AbsReactPh1 mean_900000 2018-10-26 02:30 2 S2 Line Double 1 0.329936 Farad 2.370000e-10
1127537 BM11012 AbsReactPh1 mean_900000 2018-10-26 00:15 2 S2 Line Double 1 0.966661 Farad 2.370000e-10
1127538 BM11012 AbsReactPh1 mean_900000 2018-10-25 18:15 2 S2 Line Double 1 1.000000 Farad 2.370111e-10
(...)
Code: Alles auswählen
sizes = np.unique(df["dataobjectname"])
Naiv würde ich es mit einer umständlichen Abfrage machen, á la
Code: Alles auswählen
size_unit_dict = {}
for i in range(df):
for j in range(size)
if(df["dataobjectname"][i] == size[j]): size_unit_dict[j] = df["unit"][i]
So jedenfalls würde ich es machen, was mir recht umständlich erscheint. Ich bin zwar gerade erst frisch zu python gewechselt, würde aber gerne von Anfang an lesbar & elegant programmieren. Daher: Hat jemand eine schönere Lösung?