我有形式產生新的熊貓數據幀,通過跨行
data = [{'Energy': 2,'spin': 1},{'Energy': 6,'spin': 2},{'Energy':5,'spin':2},
{'Energy': 15,'spin': 5},{'Energy': 4,'spin': 1}, {'Energy': 10,'spin': 5}]
df=pd.DataFrame(data, index=['Particle 1', 'Particle 2','Particle 3',
'Particle 4','Particle 5','Particle 6'])
print(df)
的數據幀對於每個組具有相同的自旋顆粒的子集保持最低,我想繼續只有能量最小的那個,然後放下其餘的。這是,結果數據幀應該看起來像這樣:
dataclean = [{'Energy': 2,'spin': 1},{'Energy': 5,'spin': 2},{'Energy': 10,'spin': 5}]
df2=pd.DataFrame(dataclean, index=['Particle 1','Particle 3','Particle 6'])
print(df2)
Energy spin
Particle 1 2 1
Particle 3 5 2
Particle 6 10 5
我試過不同的方法失敗。這樣做的最簡單方法是什麼?
釷很多,這很好用!更新:如果我有兩個具有完全相同自旋和完全相同能量的粒子(比如那個自旋的最小值)。例如,假設我有一個「能量= 10」和「自旋= 5」的粒子7(即與「粒子6」相同)。是否有可能在新的數據框中保留「Particle 6」和「Particle 7」? – Jon
在這種情況下,您希望保持相等的最小值,您可以使用'groupby.transform'來計算等長的最小向量並將其用於子集化。 'df [df.Energy == df.groupby('spin')。Energy.transform('min')]' – Psidom
很好用,很感謝! – Jon