现在我想处理数据框
df
A B
1 A0
1 A1
1 B0
2 B1
2 B2
3 B3
3 A2
3 A3
首先,我想按照df.A分组
sub1
A B
1 A0
1 A1
1 B0
其次,我想提取包含字母A
A B
1 A0
如果没有A
sub2
A B
2 B1
2 B2
我想提取第一行
A B
2 B1
所以,我想得到下面的结果
A B
1 A0
2 B1
3 A2
我想处理优先级提取,我尝试分组,但无法弄清楚。如何处理?
答案 0 :(得分:1)
您可以按列 A 进行分组,并且对于每个组,使用$out
上的idxmax()
,然后如果B列中有A,它将获得包含字母的第一个索引 A ,否则它会回退到第一行,因为所有值都是 False :
str.contains("A")
如果您可能有重复索引,可以使用df.groupby("A", as_index=False).apply(lambda g: g.loc[g.B.str.contains("A").idxmax()])
# A B
#0 1 A0
#1 2 B1
#2 3 A2
numpy.ndarray.argmax()
接受整数作为位置索引:
iloc