我有一個包含三列的資料框:“序列”、“微笑”和“標簽”。一些行在“sequences”和“smiles”列中具有相同的字串條目,但在“labels”列中具有不同的浮點值。對于重復的序列和微笑,我想獲取那些重復行的“標簽”列的值范圍,這些值將存盤在第四列中。我打算拒絕范圍高于某個值的行。
我制作了一個包含所有重復值的資料框:
duplicate_df = pd.concat(g for _, g in df.groupby(['sequence', 'smiles']) if len(g) > 1)
如何從 df 獲取標簽范圍?
我能做這樣的事情嗎?
duplicate_df.groupby(['Target_sequence', 'processed_SMILES']).range()
我的 duplicate_df 看起來像這樣:
pd.DataFrame({'Label': {86468: 55700.0,
86484: 55700.0,
86508: 55700.0,
124549: 55690.0,
124588: 55690.0},
'Target_sequence': {86468: 'AAPYLKTKFICVTPTTCSNTIDLPMSPRTLDSLMQFGNGEGAEPSAGGQF',
86484: 'AAPYLKTKFICVTPTTCSNTIDLPMSPRTLDSLMQFGNGEGAEPSAGGQF',
86508: 'AAPYLKTKFICVTPTTCSNTIDLPMSPRTLDSLMQFGNGEGAEPSAGGQF',
124549: 'AAPYLKTKFICVTPTTCSNTIDLPMSPRTLDSLMQFGNGEGAEPSAGGQF',
124588: 'AAPYLKTKFICVTPTTCSNTIDLPMSPRTLDSLMQFGNGEGAEPSAGGQF'},
'processed_SMILES': {86468: 'CCOC(=O)[NH ]1CC[NH ](C(=O)c2ccc(-n3c(=S)[n-]c4ccccc4c3=O)cc2)CC1',
86484: 'C[NH ]1CC[NH ](Cc2nc3ccccc3c(=O)n2Cc2nc(-c3ccccc3F)cs2)CC1',
86508: 'C[NH ]1CC[NH ](Cc2nc3ccccc3c(=O)n2Cc2nc(-c3cccc([N ](=O)[O-])c3)cs2)CC1',
124549: 'C[NH ]1CC[NH ](Cc2nc3ccccc3c(=O)n2Cc2nc(-c3cccc([N ](=O)[O-])c3)cs2)CC1',
124588: 'CCOC(=O)[NH ]1CC[NH ](C(=O)c2ccc(-n3c(=S)[n-]c4ccccc4c3=O)cc2)CC1'}})
例如,專案相同的重復行我希望在“范圍”列中有 0。
uj5u.com熱心網友回復:
std()是分組物件的有效聚合函式。因此,在df使用重復資料創建您的之后,您可以嘗試:
duplicate_df.groupby(['Target_sequence', 'processed_SMILES'])['labels'].std()
編輯:
這是使用 0.25 版發布的pd.NamedAgg的好機會:
df.groupby(['Target_sequence','processed_SMILES']).agg(Minimum = pd.NamedAgg(column='Label',aggfunc='min'),
Maximum = pd.NamedAgg(column='Label',aggfunc='max'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447939.html
上一篇:兩種不同的資料查詢方式的區別
