假设有以下数据框:
import pandas as pd
df = pd.DataFrame({'Category': ['A', 'A', 'B', 'B', 'C', 'C'],
'Value': [1, 2, 3, 4, 5, 6],
'Keep': [True, False, True, False, True, False]})
print(df)
输出:
Category Value Keep
0 A 1 True
1 A 2 False
2 B 3 True
3 B 4 False
4 C 5 True
5 C 6 False
现在我们想要将数据框按Category进行分组,并对每个组基于Keep保留一行。如果有多行都为True,则保留第一行。
这可以使用Groupby()和apply()方法完成,代码如下:
df.groupby('Category').apply(lambda x: x[x['Keep']].iloc[0])
输出:
Category Value Keep
Category
A A 1 True
B B 3 True
C C 5 True
这个组合了Groupby()和apply()的语句首先按Category对数据框进行分组,然后在每个组中只保留值为True的第一行。使用loc[0]来选择第一行。
上一篇:按列值分组并返回最大值