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