2024-09-29 04:22:09 发布
网友
现在我想处理数据帧
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
A B 1 A0
如果没有A
sub2
A B 2 B1 2 B2
我想提取第一行
A B 2 B1
所以,我想得到下面的结果
A B 1 A0 2 B1 3 A2
我想处理优先级提取,我尝试了分组,但无法解决。怎么处理?你知道吗
您可以按列A分组,对于每个组,在str.contains("A")上使用idxmax(),然后如果列B中有A,它将得到包含字母A的第一个索引,否则它将返回到第一行,因为所有值都是False:
str.contains("A")
idxmax()
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一起使用,后者接受整数作为位置索引:
numpy.ndarray.argmax()
iloc
df.groupby("A", as_index=False).apply(lambda g: g.iloc[g.B.str.contains("A").values.argmax()]) # A B #0 1 A0 #1 2 B1 #2 3 A2
您可以按列A分组,对于每个组,在
str.contains("A")
上使用idxmax()
,然后如果列B中有A,它将得到包含字母A的第一个索引,否则它将返回到第一行,因为所有值都是False:在可能有重复索引的情况下,可以将
numpy.ndarray.argmax()
与iloc
一起使用,后者接受整数作为位置索引:相关问题 更多 >
编程相关推荐