df=pd.DataFrame({'a':['x','x','y','y','y','z','y','y'],'b':np.random.randn(8)})
a b
0 x -0.2414
1 x 1.2214
2 y 0.3442
3 y -2.9492
4 y 0.1214
5 z 2.8102
6 y -1.3844
7 y -0.7363
选择列b
中与第一个字母a
中第一次出现的字母相对应的值的最有效方法是什么?
这就是我想要实现的目标
a b
0 x -0.2414
2 y 0.3442
5 z 2.8102
6 y -1.3844
答案 0 :(得分:2)
df[df['a'] != df['a'].shift(1)]
Out[22]:
a b
0 x 0.564161
2 y 1.498050
5 z 0.080116
6 y 0.255031
我使用的原始数据框:
df
Out[23]:
a b
0 x 0.564161
1 x -1.153969
2 y 1.498050
3 y 0.067259
4 y -0.345102
5 z 0.080116
6 y 0.255031
7 y 0.345250
答案 1 :(得分:1)