Pandas GroupBy并选择特定列中具有最小值的行

温迪

我正在按A列对数据集进行分组,然后想在B列中取最小值,在C列中取相应的值。

data = pd.DataFrame({'A': [1, 2], 'B':[ 2, 4], 'C':[10, 4]})
data  
    A   B   C
0   1   4   3
1   1   5   4
2   1   2   10
3   2   7   2
4   2   4   4
5   2   6   6  

我想得到:

    A   B   C
0   1   2   10
1   2   4   4

目前,我将按A分组,并创建一个值,该值指示我将保留在数据集中的行:

a = data.groupby('A').min()
a['A'] = a.index
to_keep = [str(x[0]) + str(x[1]) for x in a[['A', 'B']].values]
data['id'] = data['A'].astype(str) + data['B'].astype('str')
data[data['id'].isin(to_keep)]

我敢肯定,这样做有更直接的方法。我在这里看到了许多使用多重索引的答案,但是我想在不向数据框添加多重索引的情况下做到这一点。感谢您的帮助。

cs95

我觉得您在想这个。只需使用groupbyidxmin

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

   A  B   C
2  1  2  10
4  2  4   4

df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)

   A  B   C
0  1  2  10
1  2  4   4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在整个Pandas DataFrame中获取具有最小值的行和列

如何在Pandas DataFrame中获得带有特定列的最小值的行?

在pandas数据框中选择具有最小值和最大值的行

Python pandas:如何在符号更改时选择行并具有最小值?

寻找最小值 pandas/python 未来行范围的特定列中的值

具有最小值、最大值和总和的 Pandas 数据框 Groupby

Pandas Groupby列的最后N行的最小值和最大值

Python Pandas:根据其他列中的唯一标识符创建具有最小值的新列

Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

使用pandas groupby获取对应于最小值的行

Pandas:根据关键列中的最小值选择相应的值列

返回数据框底部具有最大值/最小值的行(python / pandas)

在3个Pandas列中选择3个值中的最小值

Pandas Dataframe-在特定行中选择具有特定值的列

Pandas groupby并指示列是否具有特定值

使用Pandas删除值大于所有具有相同ID的所有行的最小值的行

Pandas DataFrame 索引,选择具有 NaN 值的特定列的行

在Pandas DataFrame中选择具有特定值的列

当特定列在pandas中具有空值时选择数据

Pandas 数据框从列中减去组最小值

在Pandas的多个日期时间列中获取最小值

Pandas DataFrame-删除特定列中与上一行具有相同值的行

在具有多列的 Pandas DataFrame 中选择最接近零的行中的值

在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

Pandas/yfinance - 在相应行的新列中插入一列的最大值/最小值

汇总 Pandas 中特定列上具有相同值的行

根据一列的最小值和最大值恢复所有行-Python Pandas

如何基于Pandas中具有特定值的列将多行合并为一行

如何在Pandas DATAFRAME中查找具有特定数据类型的列值的行