如何过滤 Pandas DataFrame 以仅包含一列中的唯一值并聚合其他列?

时间:2021-05-19 16:22:50

标签: python pandas dataframe

我有一个如下所示的 Pandas DataFrame:

df = pd.DataFrame({"A": ["apple", "apple", "banana", "banana", "banana", "pineapple"],
                   "B": [0.5, 0.77, 0.32, 0.16, 0.05, 1],
                   "C": [132, 44, 32, 11, 0, 5]})

现在,我想从中创建一个 DataFrame,我想在其中为列 A 的每个唯一值保留列 B 的最高值的行,并丢弃其他行。所需的结果如下所示:

A            B        C
apple        0.77     44
banana       0.32     32
pineapple    1        5

有没有一种优雅的、Python 高效的方法来做到这一点? (真正的 DataFrame 非常大,除了 C 之外还有更多额外的列)

1 个答案:

答案 0 :(得分:2)

试试groupby().idxmax()

df.loc[df.groupby('A')['B'].idxmax()]

drop_duplicates 在已排序的数据帧上:

df.sort_values('B').drop_duplicates('A', keep='last')