1
我無法計算如何篩選多索引數據框,每個索引只保留一行。得到每個multiindex熊貓數據幀的最小值
這裏是我的數據: 進口隨機 進口numpy的爲NP 進口大熊貓作爲PD
A = np.array(['ID1', 'ID1', 'ID2', 'ID3', 'ID3', 'ID3', 'ID4', 'ID4'])
B = np.array([1, 2, 2, 5, 3, 7, 12, 9])
C = np.array([1,2,3,4,5,6,7,8])
D = list('abcdefgh')
df1 = pd.DataFrame(zip(A, B, C, D), columns=['ID', 'trial', 'C', 'D'])
df1.set_index(['ID', 'trial'], inplace=True)
a = np.array(['ID2', 'ID3', 'ID4'])
b = np.array([2,2,11])
df2 = pd.DataFrame(zip(a,b), columns = ['sub', 'attempt'])
DF1:
C D
ID trial
ID1 1 1 a
2 2 b
ID2 2 3 c
ID3 5 4 d
3 5 e
7 6 f
ID4 12 7 g
9 8 h
DF2:
sub attempt
0 ID2 2
1 ID3 2
2 ID4 11
,我會喜歡保持df1,只有數據th在與「嘗試」的狀態下的匹配DF2,應該保持與最接近的值的行df1.trial到df2.attempt:
C D
ID trial
ID2 2 3 c
ID3 3 5 e
ID4 12 7 g
我發現一個非常骯髒的方式(與許多「爲」迭代...),但我覺得有更美好的事情要做。
另一件事我想這樣做,是隻保留每個多指標的第一行DF1:
C D
ID trial
ID1 1 1 a
ID2 2 3 c
ID3 5 4 d
ID4 12 7 g
而且在這裏,我只得到髒的代碼,通過創建一個又一個。
謝謝你的幫助。
謝謝你的回答,它給了我第一個方向。但在我的情況下,'C'或'D'列不一定是有序的,這就是爲什麼我想要第一行。 'C'和'D'也可以不是整數或字符串,而是對象。 – POINTEAG
已更新答案@POINTEAG – piRSquared