gpt4 book ai didi

python - 如何在 pandas 中分组和处理优先级提取

转载 作者:太空宇宙 更新时间:2023-11-03 15:43:40 24 4
gpt4 key购买 nike

现在我想处理数据框

df

A B
1 A0
1 A1
1 B0
2 B1
2 B2
3 B3
3 A2
3 A3

首先,我想按 df.A 分组

子1

A B
1 A0
1 A1
1 B0

其次,我想提取包含字母 A 的第一行

A B
1 A0

如果没有A

子2

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:

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 一起使用,它接受整数作为位置索引:

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

关于python - 如何在 pandas 中分组和处理优先级提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com